2010-12-07 12 views
7

Estoy ejecutando varios proyectos en CruiseControl.NET. Muchos de ellos no tienen errores de compilación y tienen compilaciones exitosas. Todos intentan extraer el último código antes de construir.Errores SVN 500 esporádicos con CruiseControl.NET

Me he dado cuenta de que con frecuencia fallan en la construcción; CruiseControl informa "Excepción". La excepción es un error SVN 500 (error interno del servidor). Golpea de forma aleatoria pero persistente (por ejemplo, en un proyecto, todas las construcciones alternativas fallan).

He intentado verificar algunos de estos proyectos esporádicamente defectuosos con las mismas credenciales, y funciona. Sé que los proyectos se crean, porque no todas las construcciones fallan.

¿Cuál podría ser el problema?

Por lo que vale la pena, aquí está la línea superior de una excepción ejemplar (sin URL del proyecto SVN o credenciales):

ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation failed: svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'https://some/url/trunk' 
. Process command: C:\Program Files\CollabNet Subversion Client\svn.exe log https://some/url/trunk -r "{2010-12-04T09:09:19Z}:{2010-12-07T09:08:48Z}" --verbose --xml --username ******** --password ******** --non-interactive --no-auth-cache 

Editar: A veces esto parece ser debido a que hay un conflicto de SVN en el local de carpeta. Pero no es consistente.


Bounty: ¡Tengo una recompensa para una solución general a esto: ¿cómo puede CC.NET ser configurado para hacer frente con gracia con errores SVN, es decir, no tratar fallos SVN desencadenados por una verificación de actualización periódica (a diferencia de las compilaciones diarias programadas) como fallas de compilación, pero en su lugar retroceden graciosamente hasta que se solucione o hasta que la conexión se recupere.

No he logrado resolver esto por mi cuenta, aunque no soy un experto en CC.NET y no he buscado durante mucho tiempo. ¿Hay soporte para esto o necesitaría codificación? ¡Gracias!

Para aclarar,

  • Tenemos un servidor CC.NET configurar para comprobar si hay nuevas confirmaciones y la caja + + construir prueba de todos los cambios a continuación, informan el resultado.
  • Si, sin embargo, el servidor SVN se cae o si perdemos la conexión, se trata como si el último compromiso rompiera la construcción: establece el estado de compilación en rojo y envía un correo electrónico al último committer como si fuera su culpa .
  • Sí, esto sería un problema para un trabajo de compilación de una vez al día, pero para una integración continua de cada compromiso. No creo que este sea un comportamiento útil.
+0

Independientemente de la causa, también me interesaría una forma de configurar CC.NET para ignorar las excepciones SVN en lugar de fallar la compilación. – Rup

+0

¿No debería su configuración de CI producir lo que produciría una comprobación limpia? De ser así, si ocurre una excepción, su entorno de compilación completo no sería válido. – Mark

+0

Para ser 100% claro aquí, en el caso de una falla de control de fuente, ¿qué exactamente estaría construyendo? En el mejor de los casos, ciertamente algo irreproducible y, por lo tanto, inútil. En el peor, algo que no se construiría en absoluto. – Mark

Respuesta

1

Una manera más difícil de resolver este problema sería para comprobar si hay modificaciones con un archivo por lotes o un envoltorio personalizado (en lugar de la instalación de control de fuente de CruiseControl.NET) que llama al cliente SVN y crea un archivo (o alguna otra forma de cambios de señalización) si se requiere la compilación. El lote o envoltorio podría tratar las excepciones según sea necesario. Por supuesto, esta solución podría requerir la alteración del resto del proceso de compilación.

+1

Gracias - buena idea. Te daré la recompensa pero más por tus comentarios que me señalaron algunas opciones de configuración que ya existen para eso, como en estas viejas preguntas http://stackoverflow.com/questions/2086957/can-we-tell-cruisecontrol- net-to-ignore-source-control-timeout-errors/2086994 # 2086994 http://stackoverflow.com/questions/1156911/cruisecontrol-net-build-fails-when-svn-is-not-available/1156955#1156955 que de alguna manera me había perdido Gracias. Jugaré con ellos y, cuando tenga tiempo, profundizaré en la fuente de CC.NET y desarrollaré cualquier otra cosa que necesite. – Rup

+0

Feliz de que lo haya encontrado útil. – alexandrul

Cuestiones relacionadas