Dans notre boutique de développement de logiciels .NET, nous avons créé CruiseControl.NET pour construire 28 projets, dont certains sont interdépendants. Chaque projet représente approximativement un projet Visual Studio ou une bibliothèque Flex associée à des tests unitaires. Ce que je suis ennuyé, c'est que je n'ai pas trouvé un bon moyen de s'assurer que les projets construisent dans un ordre représentant les dépendances.Créer une commande dans CruiseControl.NET avec des dépendances de projet
est ici ce que je fais:
- Tout est dans la même file d'attente de construction. Je l'ai fait pour que les versions soient séquentielles et que je puisse éviter d'avoir besoin de plusieurs répertoires de travail.
- J'ai défini des priorités de file d'attente sur les projets, ce qui, selon moi, influencerait leur ordre de construction. Mais après avoir lu la documentation plus attentivement, j'ai constaté qu'il ne contrôlait que la priorisation lorsqu'il y a plusieurs demandes de construction dans une file d'attente.
- En plus d'utiliser des déclenchements d'intervalle pour lancer une génération, j'utilise des déclencheurs de projet de sorte que lorsque les dépendances sont correctement construites, leurs dépendances se construisent également.
D'une certaine manière, cette configuration fonctionne. Le problème principal est que quelqu'un commet des changements au code dans le projet A et dans le projet B, où le projet B dépend du projet A. Parfois, le projet B sera construit avant le projet A. Comme le projet A n'a pas encore été construit, cela peut parfois provoquer la rupture du projet B Ceci est temporaire, car le déclencheur d'intervalle provoque la génération ultérieure du projet A, et sa construction réussie déclenche le projet B pour reconstruire et se corriger. Ce que je veux éviter, c'est que le projet B soit construit avant le projet A afin que la rupture intermédiaire ne puisse pas se produire.
Quelles pratiques utilisez-vous pour gérer correctement les interdépendances sur un serveur CruiseControl.NET? À ce stade, je ne suis pas prêt à passer à un package d'intégration continue non-free comme TeamCity.
En procédant ainsi, je devrais dupliquer les instructions de construction de chaque projet de dépendance dans chaque projet dépendant. Mais je suppose que s'il s'avère que je ne peux pas contrôler l'ordre de construction dans CC.NET, je devrais être redondant. Au moins, je peux utiliser le support de CC.NET pour les entités XML pour encapsuler les étapes de construction d'un projet. – Jacob
Pas nécessairement. Utilisez un seul fichier cruise.build pour stocker le script NAnt. Partagez ce fichier cruise.build unique à travers les projets, de cette façon ils adhèrent tous à la hiérarchie des dépendances et vous ne dupliquez pas le script. –
Bien qu'il soit à craindre que la boîte de construction doive encore faire un double bâtiment, on dirait qu'il n'y a pas de bonne solution. Cette réponse ressemble à la meilleure. – Jacob