CruiseControl.net se ejecuta como un servicio de Windows y como un proceso independiente se comporta de manera diferente

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

Pregunta

Tengo un proyecto que se está construyendo con CruiseControl.net. El proyecto contiene una 'tarea MSBuild' que ejecuta la compilación para el proyecto y también las pruebas unitarias. La prueba unitaria a su vez es solo una tarea de MSBuild 'Exec' que ejecuta un ejecutable.

La prueba unitaria implica algunas remotas .NET. Y cuando las pruebas unitarias se ejecutan a través del símbolo del sistema del sistema, la ventana del software se abre, las pruebas se ejecutan y el proceso sale.

Cuando forgo una compilación a través del tablero de la web, la compilación se cuelga en el punto donde la prueba unitaria comienza a funcionar. La ventana del software no se abre, pero el ejecutable se está ejecutando. Si el proceso se mata a través del Explorador de tareas, la compilación realiza un estado de 'falla'. Esto sucede cuando ejecuto CCNET como un servicio de Windows.

Si ejecuto CCNET directamente (no como un servicio de Windows) y forgo una compilación a través del tablero web, las pruebas de compilación y unidad pasan bien como se esperaba. (Con la ventana de la apertura del software).

Parece que hay un punto muerto en el caso de que CCNET se ejecute como un servicio de Windows. Supongo que está relacionado con las secuencias de salida/error estándar.

  1. ¿Es este problema conocido?

  2. ¿Cuál podría ser el problema?

  3. ¿Alguna sugerencia sobre la depuración de esto?

  4. ¿Cómo puedo evitarlo?

(Estoy usando CCNET versión 1.4.4 SP1)

¿Fue útil?

Solución

Cuando CCNET se ejecuta como servicio, no tendrá acceso a la pantalla, así que no espere ver nada en la pantalla en esta configuración. Lo primero que verificaría son los permisos: asegúrese de que el servicio se ejecute como una cuenta que tiene permisos para acceder a los recursos que necesite. También tiene archivos de registro CCNET, que puede encontrar a través del tablero.

En una nota al margen, intente TeamCity en lugar de CCNET, sus 10 años por delante.

Otros consejos

Quizás esta respuesta ayude:El servicio de Delphi Windows no puede descargar archivo desde Internet

Debe saber que al ejecutar CCNET como una aplicación (el Dosbox) utiliza las variables de entorno y todos los derechos de la cuenta registrada. Por lo tanto, puede conectarse a un servidor, usar contraseñas en caché, obtener variables de registro para esta cuenta.

Pero cuando se ejecutó como servicio, la cuenta es la que proporcionó: LocalSystem para Exampe, donde env. Los varibales no son lo mismo.

Entonces, lo que puede hacer es cambiar la cuenta del servicio CCNET para la prueba. Cámbielo a su cuenta de usuario (con contraseña), ¡y estoy seguro de que funcionará mejor!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top