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:
¿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.