¿Podemos decirle a CruiseControl.NET que ignore los errores de time de espera de control de fuente?

Tenemos CruiseControl.NET configurado para hacer una continuous integration de varios de nuestros proyectos.

Estamos utilizando un bloque <cb:define> para asegurarnos de que todas nuestras operaciones de control fuente se realicen de la misma manera, y para mantener la configuration SECA.

Estamos experimentando un problema de vez en cuando que hace que la compilation muestre "Excepción". El post es el siguiente:

 ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out. at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo) at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Svn.GetModifications(IIntegrationResult from, IIntegrationResult to) at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModifications(ISourceControl sourceControl, IIntegrationResult lastBuild, IIntegrationResult thisBuild) at ThoughtWorks.CruiseControl.Core.IntegrationRunner.GetModifications(IIntegrationResult from, IIntegrationResult to) at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request) 

La sección de configuration común es la siguiente:

 <sourcecontrol type="svn"> <trunkUrl>http://ourserver/svn/$(project-svn-path)/trunk/</trunkUrl> <executable>C:\Program Files\CollabNet Subversion Server\csvn.exe</executable> <username>user</username> <password>password<password> <revert>true</revert> </sourcecontrol> 

Me gustaría ignorar este error específico, si es posible.

¿Qué cambios necesito hacer?

Aquí hay un bloque que uso para evitar este tipo de errores que afectan el estado de compilation:

 <maxSourceControlRetries>5</maxSourceControlRetries> <stopProjectOnReachingMaxSourceControlRetries>true</stopProjectOnReachingMaxSourceControlRetries> <sourceControlErrorHandling>ReportOnRetryAmount</sourceControlErrorHandling> 

Debe colocarlos justo debajo de la label <project> , no del <sourcecontrol> . Sin embargo, no estoy seguro de que puedas ignorar solo la exception de "time de espera agotado": todas las excepciones de SVN serán tratadas de la misma manera.

ACTUALIZACIÓN: puede encontrar más información sobre estas configuraciones en la documentation de CC.NET , pero déjeme copyr las cosas relevantes:

maxSourceControlRetries : la cantidad máxima de excepciones de control de origen en una fila que puede ocurrir, antes de que el proyecto pase al estado detenido (cuando stopProjectOnReachingMaxSourceControlRetries se establece en verdadero).

stopProjectOnReachingMaxSourceControlRetries : Detiene el proyecto al alcanzar maxSourceControlRetries o no. Cuando se establece en verdadero, el proyecto se detendrá cuando la cantidad de errores consecutivos de control de origen sea igual a maxSourceControlRetries.

sourceControlErrorHandling : qué acción realizar cuando se produce un error de control de origen (durante GetModifications). Estos son los valores posibles:

  • ReportEveryFailure: ejecuta la sección del editor cada vez que hay un error
  • ReportOnRetryAmount: solo ejecuta la sección del editor cuando se ha alcanzado maxSourceControlRetries, la sección del editor solo se ejecutará una vez.
  • ReportOnEveryRetryAmount: ejecuta la sección del editor cada vez que se ha alcanzado maxSourceControlRetries. Cuando se ha alcanzado maxSourceControlRetries y se ha ejecutado la sección del editor, el contador vuelve a establecerse en 0.

¿No puedes simplemente boost el valor de 'timeout'?

 <sourcecontrol> ... <timeout>60000</timeout> <!-- timeout in milliseconds --> ... </sourcecontrol> 

Además de la respuesta aceptada. Descubrí que nos ayudó mucho usando el disparador de url.

 <triggers> <urlTrigger url="http://url.to.your.svn.server" /> </triggers> 

Entonces, si el server no es accesible, CCNet no desencadenará una compilation. Eso efectivamente networkingujo la posibilidad de fallas.

Enlace a la documentation del disparador de URI .

Actualización: nunca tuvimos un solo error falso causado por el problema de conectividad del server svn después de que la línea anterior estuvo activa durante cerca de 2 meses.