2009-08-26 12 views
11

Tenemos varios proyectos en CruiseControl y noté que a menudo se construyen 2 o más proyectos al mismo tiempo. Esto parece estar causando conflictos. A menudo, una compilación falla y si miro la razón, está fallando al acceder a algún archivo, y si espero hasta que la otra compilación se complete, puedo forzar y compilar la compilación fallada y tendrá éxito.¿Cómo puedo evitar compilaciones simultáneas en CruiseControl.NET?

¿Cómo puedo configurar CC para que no ejecute compilaciones simultáneamente si van a entrar en conflicto entre ellas?

Respuesta

10

Tienes que hacer todas las compilaciones que dependen unas de otras, en una cola.

El elemento de configuración del proyecto de control de crucero tiene dos atributos para controlar la concurrencia y el orden de construcción:

<project name="Project 1" queue="Q1" queuePriority="1"> 

Con queue puede definir en qué cola del proyecto será construir, con queuePriority puede definir el orden de construye cuando se solicitan varias compilaciones.

Entonces dos proyectos que no se pueden construir en paralelo tienen que estar en la misma cola, digamos queue="Q1". Cuando el segundo proyecto depende del primero, el segundo debe tener una prioridad mayor que el primero.

+0

¿Esto le impiden la construcción de un Proyecto 1 Proyecto 2 sin necesidad de construir? ¿O ambos se construirán siempre porque están en la misma cola? –

+0

No, eso se haría con disparadores – JoelFan

7

Puede usar la característica Locking para definir los que no se deben ejecutar al mismo tiempo.

Este servicio está disponible en la versión 1.4.3

Una muestra de la documentación:

<cruisecontrol> 
    <queue name="Q1" lockqueues="Q2"/> 
    <queue name="Q2" lockqueues="Q1"/> 

    <project name="MyFirstProject" queue="Q1" queuePriority="1"> 
    ... 
    </project> 
    ... 

    <project name="MySecondProject" queue="Q2" queuePriority="1"> 
    ... 
    </project> 
    ... 
</cruisecontrol> 
Cuestiones relacionadas