2009-08-26 4 views
11

Nous avons plusieurs projets dans CruiseControl et j'ai remarqué que souvent 2 projets ou plus construisent en même temps. Cela semble provoquer des conflits. Souvent, une construction échoue et si je regarde la raison, elle ne parvient pas à accéder à certains fichiers, et si j'attends que l'autre build soit terminée, je peux juste forcer la construction échouée et ça va réussir.Comment puis-je empêcher les versions simultanées dans CruiseControl.NET?

Comment est-ce que je peux configurer CC afin qu'il n'exécute pas des builds simultanément s'ils vont entrer en conflit les uns avec les autres?

Répondre

10

Vous devez faire toutes les constructions qui dépendent les unes des autres, en une file d'attente.

Le régulateur de vitesse élément de configuration de projet comporte deux attributs pour contrôler la concurrence et de l'ordre de construction:

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

Avec queue vous pouvez définir dans quelle file d'attente le projet doit être construit, avec queuePriority vous pouvez définir l'ordre de construit quand plusieurs builds sont demandés.

Deux projets qui ne peuvent pas être créés en parallèle doivent donc se trouver dans la même file d'attente, par exemple queue="Q1". Lorsque le second projet dépend du premier, le second projet doit avoir une priorité plus élevée que le premier.

+0

Est-ce que cela vous empêche de construire un projet 1 sans la construction du projet 2? Ou les deux seront toujours construits parce qu'ils sont dans la même file d'attente? –

+0

Non, cela serait fait avec des déclencheurs – JoelFan

7

Vous pouvez utiliser la fonctionnalité Locking pour définir queus qui ne doit pas s'exécuter en même temps.

Il est disponible dans la version 1.4.3

Un échantillon de la documentation:

<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> 
Questions connexes