2009-03-11 8 views
7

El servicio CruiseControl.NET debe reiniciarse para detectar cambios en los archivos de configuración .¿Por qué se necesita reiniciar CruiseControl.NET después de GetCcNetConfigFiles?

Me parece muy molesto, no estoy seguro de si es un error o es la forma en que funciona.

¿Hay alguna manera de superar este problema en la experiencia de las personas?

+0

¿Está hablando del archivo ccservice.exe.config (configuración del rvice) o ccnet.config (configuración de los proyectos). Los cambios en este último se recogen automáticamente (para mí). – M4N

+0

Estoy hablando de cambios en los archivos de configuración del proyecto (señalando a una rama diferente, etc.) – JohnIdol

Respuesta

10

Si sus proyectos están separadas en un archivo diferente de ccnet.config, entonces usted necesita para reiniciar el servicio a menos que toque el ccnet.config. verdadero

Utilizamos ENTITY con la referencia de archivo SYSTEM en ccnet.config para nuestros proyectos, entonces estamos en el mismo barco. Estoy feliz de pagar el precio de mantenimiento del proyecto más fácil, ya que es fácil de programar un reinicio:

net stop CCService 
net start CCService 
IISRESET 

Si quisiera automatizar completamente esto, y tenía sus proyectos bajo control de fuente, entonces podría desencadenar una actualización y reiniciar cada vez que se tocan los archivos de su proyecto.

+0

Sí, están en archivos separados: un gran archivo de configuración no es posible cuando tiene muchos proyectos en CC. ¿Así que puedes confirmar que esta es la única forma? – JohnIdol

+0

Me temo que CCNET solo puede saber sobre su archivo de configuración actual, AFAIK .NET no puede determinar los cambios a los archivos de configuración a los que se hace referencia mediante el SISTEMA. Hubo un cambio reciente: http://confluence.public.thoughtworks.org/display/CCNET/Configuration+Preprocessor pero no estoy seguro de que ayude? – si618

1

Nunca he experimentado esto. Cada vez que cambio los archivos de configuración, el servicio CruiseControl.NET parece volver a leerlos automáticamente.

Estoy usando la versión 1.3 de CC.NET.

Actualización:

En el archivo de configuración del servicio (ccservice.exe.config), hay una opción para activar/desactivar viendo el archivo ccnet.config de cambios:

<add key="WatchConfigFile" value="true"/> 

Hacer seguro de que esto se establece en verdadero.

+0

Estoy usando 1.4.2 (en winXP SP2) y puedo confirmar que está sucediendo para mí (también estaba sucediendo con 1.3)) – JohnIdol

+0

gracias por su sugerencia. Lo comprobé, pero WatchConfigFile ya está configurado en true – JohnIdol

2

¿Cómo está actualizando sus archivos de configuración? ¿A mano? El mío siempre lo reconoce y lo ajusta. ¿Su archivo de configuración está en control de fuente y está diseñado para desplegarlo y reemplazar el archivo? Esto para mí requiere una patada. Cómo terminé arreglando esto fue hacer que mi proyecto lo bajara a una carpeta separada. A continuación, invoco ccnet.exe -validate para asegurarme de que está bien formado, y luego lo copio en la parte superior del archivo de configuración actual. CC.NET reconoce los cambios y cargas en la nueva configuración

Excepciones: Si cc.net está ejecutando actualmente un proyecto, no reconocerá los cambios hasta que el proyecto se haya completado.

Si su ccnet.config tiene errores, nunca reconocerá los cambios y seguirá ejecutando la versión anterior que haya almacenado en la memoria. (Sin embargo, cuando se reinicia CC.NET se tratará de analizar el error de configuración de llenado y el estrangulador.

Espero que esto ayude !!

2

¿Quiere decir que está utilizando archivos vinculados, es decir, el archivo ccnet.config tiene enlaces a los archivos de proyectos independientes.

Si es así, no son recogidos, se menciona en la documentación que no mira los subarchivos.

Internamente hemos modificado nuestro CruiseControl.net para que nuestro ccnet.config sea opcionalmente un directorio, y podemos colocar accesos directos a nuestros archivos de configuración de proyecto en ese directorio. Ponemos relojes en el directorio, los archivos o accesos directos en el directorio y todos los objetivos de los accesos directos.Eso significa que tenemos nuestros archivos de configuración de proyectos en ClearCase y simplemente colocamos un acceso directo en el directorio ccnet.config.

Acabo de pasar medio día más o menos pasando de 1.2 a 1.4.2 dejando nuestros cambios en la nueva versión para nuestro uso interno. No poseemos nuestro código, nuestro cliente sí y por lo tanto debe permanecer interno :(

+0

¿puede describir cómo lo hizo sin dar la implementación? – JohnIdol

+0

Resolveré algo: es una implementación ordenada y creo que debería volver a incorporarse a la compilación pública como un poco de retribución. –

5

Hubo un error en CC.Net anterior a 1.4.4 si usaba un pre-procesador incluido no lo recargó la configuración cuando se modificó un archivo ccnet.config incluido.

eso fue un error que me informó y se fija en CC.Net 1.4.4 y superiores.

Además, tenga en cuenta que si una acumulación se está ejecutando y hay un cambio en la configuración, no tendrá lugar hasta que la compilación esté en estado inactivo.

+0

"Además, tenga en cuenta que si se está ejecutando una compilación y hay un cambio en la configuración, no se llevará a cabo hasta que la compilación esté en estado inactivo". fue la clave para mí, ¡gracias! –

Cuestiones relacionadas