2009-07-13 9 views
3

mon responsable m'a demandé de configurer l'automatisation de la construction pour nos projets. J'ai décidé d'utiliser CruiseControl.Net comme serveur d'intégration continue car certains autres membres de l'équipe ont un peu d'expérience, je n'en ai pas - c'est pourquoi je suis heureux d'entreprendre cette tâche.Création d'un projet référencé avec CruiseControl.Net

Nous utilisons Subversion comme notre référentiel et le but ultime est d'instancier une construction à chaque fois qu'un projet est marqué. Par exemple:

Ajout d'un dossier à svn: // svn/tags/ProjectX/tel que svn: // svn/tags/ProjectX/JulyCheckPoint devrait checkout le tag nouvellement ajouté (svn: // svn/tags/ProjectX/JulyCheckPoint) dans un répertoire local (D: \ temp \ tags \ ProjectX \ JulyCheckPoint) et exécutez un fichier nant (D: \ temp \ tags \ ProjectX \ JulyCheckPoint \ nant.build)

Je sais que CruiseControl est capable de surveiller svn: // svn/tags/ProjectX/pour les changements, mais je ne suis pas sûr de la façon dont je vais extraire la dernière balise sur le disque local du serveur de construction et exécuter le nant.build à l'intérieur si je ne sais pas le nom de la balise la plus récente. J'ai fait un peu de googling et je crois que svn post-commit hooks peut être quelque chose que je devrais regarder.

J'espère que tout cela a du sens, s'il vous plaît laissez-moi savoir si vous avez besoin de plus de détails/clarification. Toute orientation/conseil serait grandement appréciée.

Cheers.

Répondre

0

la seule façon que je pense que vous pouvez faire est d'utiliser svn: externals et je pense que la configuration d'un référentiel pointé sur votre tag.

svn propget svn:externals blah 

puis faites une caisse contre cette caisse par exemple svn http://svn/repos/blah

Dans CruiseControl.NET mis

<checkExternals>True</checkExternals> 
<checkExternalsRecursive>True</checkExternalsRecursive> 

dans votre config pour ce projet

2

Puisque vous savez comment surveiller/svn/tags/ProjectX/pour les changements, vous pouvez l'avoir pour déclencher un script nant. Ce script peut exécuter des commandes sur svn (voir les tâches svn dans http://nantcontrib.sourceforge.net/release/0.85/help/tasks/index.html) pour extraire le dernier dossier dans/svn/tags/ProjectX /. De là, vous pouvez utiliser ce script nant pour appeler le script nant dans le dossier extrait en utilisant la tâche nant.

1

Cela ne répond pas à votre question mais je suis curieux de savoir pourquoi vous choisissez de construire à partir de tags plutôt que HEAD?

intégration Typiquement continu est utilisé pour construire votre code de projet chaque modification sont apportées à votre référentiel de code source afin que les problèmes sont pris en charge précocement. J'aime vraiment this article par Martin Fowler. Cela m'a beaucoup aidé quand j'ai commencé à utiliser l'intégration continue.

+0

Merci, je vais certainement jeter un coup d'oeil à cet article. La prochaine étape que j'avais à l'esprit est de mettre en œuvre des constructions nocturnes du coffre (pour le but que vous mentionnez). Finalement, en construisant à partir de balises, je veux que le gestionnaire de construction/développeur qui valide la balise reçoive un paquet d'installation .msi contenant le projet balisé (en regardant dans WiX). De cette façon, tous les jalons que nous atteignons peuvent être intégrés dans une installation de version en marquant simplement la construction particulière. Y a-t-il des inconvénients à cela que j'ai oubliés? – Boris

+0

Cela semble être une requête raisonnable, mais cela ne correspond pas vraiment au fonctionnement de CC.Net. Dans ce cas, je suggérerais d'avoir un deuxième projet CC.Net appelé release build qui est exécuté par les administrateurs. Cette construction créerait le MSI et marquerait le tronc. Si des modifications sont nécessaires au code balisé, vous pouvez ensuite créer une branche et créer un nouveau projet CC.Net à partir de cette branche. Ceci est un aperçu très simpliste, mais nous espérons vous donner quelques idées pour vous aider à démarrer. – MikeD

0

Appréciez tous les assistants. J'ai décidé de donner un coup de pouce aux suggestions d'acloutier et de créer des fichiers nant statiques pour chaque projet, ces fichiers nant sont toujours installés sur le serveur de build.

CruiseControl.Net (configuration sur le serveur de build) surveille le référentiel des balises pour chaque projet et déclenche le fichier statique approprié Nant. Ce fichier nant exécute ensuite du code C# qui détermine le nom du dernier dossier ajouté dans svn: // svn/tags/ProjectX/location.En connaissant le nom du dernier dossier ajouté, je peux svn-extraire le projet balisé le plus récemment sous svn: // svn/tags/ProjectX/vers un emplacement local et exécuter le fichier nant dans le projet.

Si quelqu'un nécessite des extraits de code ou des éclaircissements, je me ferai un plaisir de les fournir lorsque je serai au travail. Merci pour l'aide!

+0

Salut Boris, pouvez-vous expliquer ou peut-être montrer des extraits sur comment vous avez obtenu ce travail? Je vous remercie! – Abe