2010-01-18 12 views
10

Tenemos CruiseControl.NET configurado para hacer una integración continua de varios de nuestros proyectos.¿Podemos decirle a CruiseControl.NET que ignore los errores de tiempo de espera del control de origen?

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

Estamos experimentando un problema de vez en cuando que causa que la construcción muestre "Excepción". El mensaje 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 configuración común es el 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 pasar por alto este error específico, si es posible.

¿Qué cambios debo hacer?

+0

Seguramente si ignora un tiempo de espera de control de fuente, no está construyendo de manera fiable la revisión más reciente y su construcción de "integración continua" no tiene sentido? –

+0

@David M: Bueno, esto generalmente ocurre durante una ventana de SLA cuando el servidor SVN se apaga por mantenimiento. Esta no es una circunstancia excepcional, por lo que me gustaría ignorar el problema si ocurre por menos de unas pocas horas. –

+0

Tenemos un servidor svn alojado en internet y una conexión a Internet escamosa. Cada vez que se corta la conexión obtenemos una compilación fallada, lo que no es útil. Así que gracias por la pregunta. –

Respuesta

16

Aquí hay un bloque que utilizo para evitar este tipo de errores que afectan el estado de construcción:

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

Es necesario poner este la derecha debajo de la etiqueta <project>, no el <sourcecontrol>. Sin embargo, no estoy seguro de que puedas ignorar solo la excepción de "tiempo de espera agotado": todas las excepciones de SVN serán tratadas de la misma manera.

ACTUALIZACIÓN: se puede encontrar más información sobre estos ajustes en el CC.NET documentation, pero me deja copiar el material relevante:

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

stopProjectOnReachingMaxSourceControlRetries: Detiene el proyecto al llegar a 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é medidas tomar cuando se produce un error de control de fuente (durante GetModifications). Estos son los valores posibles:

  • ReportEveryFailure: dirige la sección del editor cada vez que hay un error
  • ReportOnRetryAmount: sólo se ejecuta la sección del editor cuando se ha alcanzado maxSourceControlRetries, la sección del editor sólo se ejecuta 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 0.
+0

Voy a marcar este como aceptado, aunque no tengo una forma de probarlo necesariamente. ¿Podría hacerme un favor y explicar cada una de esas entradas? –

+0

He actualizado la respuesta con algunos documentos CC.NET. Digamos que he tenido el mismo problema con los tiempos de espera SVN (por lo general, durante la noche) y, a menudo, el estado de compilación se marcó como "Excepción" por eso. Después de jugar un poco con estas configuraciones, me decidí por las que publiqué aquí y no he tenido ningún problema después de eso. Es posible que desee jugar con estos usted mismo (aumentando el recuento de reintentos, por ejemplo). –

+0

Estoy usando la misma configuración, lamentablemente, no resuelve el problema. El administrador de mi red tiene un mal hábito de romper la red a intervalos aleatorios, lo que marca toda nuestra construcción en rojo hasta que alguien fuerza una construcción de forma manual. – skolima

8

¿No se puede simplemente aumentar el valor de 'timeout'?

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

El problema generalmente ocurre durante la noche, cuando el servidor está realmente inactivo o algo así. –

+4

Gracias. Esto me ayudó con el problema que estaba teniendo. Aunque tuvimos que usar 1, nos apuntó en la dirección correcta. +1 a ti. – David

+0

@David ¡Tu comentario ha funcionado para mí, gracias! – Holger

0

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> 

Si el servidor no es accesible, CCNet no desencadenará una compilación. Eso efectivamente redujo la posibilidad de fallas.

Link to Documentation of URI Trigger.

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

Cuestiones relacionadas