cruisecontrol.net تشغيل كخدمة Windows وكعملية مستقلة تتصرف بشكل مختلف

StackOverflow https://stackoverflow.com/questions/2802583

سؤال

لديّ مشروع تم بناؤه باستخدام CruiseControl.net. يحتوي المشروع على "مهمة MSBuild" التي تدير البناء للمشروع وأيضًا اختبارات الوحدة. اختبار الوحدة بدوره هو مجرد مهمة MSBUILD 'EXEC' التي تدير قابلة للتنفيذ.

يتضمن اختبار الوحدة بعض .NET عن بعد. وعندما يتم تشغيل اختبارات الوحدة من خلال موجه أوامر النظام ، يتم فتح نافذة البرنامج ، وتشغيل الاختبارات وتخرج العملية.

عندما أجبر البناء عبر لوحة معلومات الويب ، يتم تعليق البناء عند النقطة التي يبدأ فيها اختبار الوحدة. لا تنفتح نافذة البرنامج ، لكن القابلة للتنفيذ تعمل. إذا تم قتل العملية من خلال Explorer Task ، فإن البناء يمر بحالة "فشل". يحدث هذا عندما أقوم بتشغيل CCNET كخدمة Windows.

إذا قمت بتشغيل CCNET مباشرة (وليس كخدمة Windows) وفرض بناء من خلال لوحة معلومات الويب ، فإن اختبارات البناء والوحدة تمر بشكل جيد كما هو متوقع. (مع فتح نافذة البرنامج.)

يبدو أن هناك طريق مسدود في الحالة التي يتم فيها تشغيل CCNET كخدمة Windows. أظن أنه مرتبط بتدفقات الإخراج/الخطأ القياسية.

  1. هل هذه مشكلة معروفة؟

  2. ماذا قد تكون المشكلة؟

  3. أي اقتراحات بشأن تصحيح هذا؟

  4. كيف يمكنني الالتفاف حوله؟

(أنا أستخدم CCNET الإصدار 1.4.4 SP1)

هل كانت مفيدة؟

المحلول

عندما يتم تشغيل CCNET كخدمة ، فلن تتمكن من الوصول إلى الشاشة ، لذلك لا تتوقع رؤية أي شيء على الشاشة في هذا التكوين. أول شيء أتحقق منه هو الأذونات - تأكد من أن الخدمة تعمل كحساب لها أذونات للوصول إلى الموارد التي تحتاجها. لديك أيضًا ملفات سجل CCNET ، والتي يمكنك العثور عليها عبر لوحة القيادة.

في ملاحظة جانبية ، جرب TeamCity بدلاً من CCNET ، قبل 10 سنوات.

نصائح أخرى

ربما ستساعد هذه الإجابة:Delphi Windows Service لا يمكن تنزيل الملف من الإنترنت

يجب أن تعلم أنه عند تشغيل CCNET كتطبيق (DOSBOX) ، فإنه يستخدم متغيرات البيئة وجميع الحقوق من الحساب المسجل. لذلك قد يتصل بخادم ، واستخدام كلمات المرور المخزنة مؤقتًا ، والحصول على متغيرات التسجيل لهذا الحساب.

ولكن عندما يتم تشغيله كخدمة ، فإن الحساب هو الحساب الذي قدمته: LocalSystem for Exampe ، حيث ENV. varibales ليست هي نفسها.

لذلك ، ما يمكنك فعله هو تغيير حساب خدمة CCNET للاختبار. قم بتغييره إلى حساب المستخدم الخاص بك (مع كلمة المرور) ، وأنا متأكد من أنه سيعمل بشكل أفضل!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top