\0_ Cruise Control .NET : interroger plusieurs emplacements SourceSafe pour le même projet
mercredi 13 août 2008
Avant notre passage à Team Foundation Server, mon client utilisait SourceSafe pour versionner et stocker son code source. Du coup, j'avais monté un serveur d'intégration continue à l'aide de l'excellent Cruise Control .NET. Au cours de la configuration de CCNet, je me suis vite heurté à un problème : comment surveiller plusieurs emplacements du contrôleur de code source dans le même projet quand on ne peut mettre qu'une balise sourcecontrol dans le fichier de configuration ? Parce que gérer un emplacement c'est bien gentil, mais en général les applications qu'on développe s'appuient sur quelques autres composants maison, bien souvent hébergés à l'autre bout du contrôleur de code source.J'avais probablement pas mal de caca dans les yeux ce jour-là, puisque je suis allègrement passé à côté de la page de la documentation de CCNet qui l'explique.
Mais comme je suis bien parti et qu'aujourd'hui je me sens d'humeur généreuse (qui ne le serait pas après une victoire acquise de haute lutte suite à trois jours d'âpres combats contre un IIS récalcitrant ?), je vous l'explique quand même.
L'astuce repose sur l'utilisation d'un type de sourcecontrol spécial portant le doux nom de multi. Dans ce type de sourcecontrol, on peut mettre une balise sourceControls, puis autant de balises liées à un contrôleur de code source que nécessaire.
Un petit exemple, parce qu'on dirait que vous ne comprenez rien à ce que je vous dis :
<cruisecontrol>
<project name="Exemple" webURL="http://serveur-integration/server/local/project/Exemple/ViewLatestBuildReport.aspx">
<workingDirectory>D:\\Integration\\Exemple</workingDirectory>
<sourcecontrol type="multi">
<sourceControls>
<vss>
<project>$/Toto</project>
<username>integration</username>
<password>integration</password>
<ssdir>\\\\sourcesafe\\sources\\</ssdir>
<workingDirectory>D:\\Integration\\Exemple\\Toto</workingDirectory>
<timeout units="minutes">15</timeout>
</vss>
<vss>
<project>$/DAL</project>
<username>integration</username>
<password>integration</password>
<ssdir>\\\\sourcesafe\\sources\\</ssdir>
<workingDirectory>D:\\Integration\\Exemple\\DAL</workingDirectory>
<timeout units="minutes">15</timeout>
</vss>
<vss>
<project>$/OhGeorges</project>
<username>integration</username>
<password>integration</password>
<ssdir>\\\\sourcesafe\\sources\\</ssdir>
<workingDirectory>D:\\Integration\\Exemple\\OhGeorges</workingDirectory>
<timeout units="minutes">15</timeout>
</vss>
</sourceControls>
</sourcecontrol>
<tasks>
<devenv solutionfile="Exemple.sln" configuration="release" executable="C:\\Program Files\\Microsoft Visual Studio 9.0\\Common7\\IDE\\devenv.com" />
</tasks>
</project>
</cruisecontrol>
C'est plus clair comme ça ?
Je ne vous fais pas le détail des balises, vous êtes grands, et en cas de souci il y a la doc du sourcecontrol "multi".
Réactions :
mardi 19 août 2008 - 13:41
En l'occurrence, je n'avais pas d'autre besoin que celui de compiler, donc ça me convenait bien.
D'autre part, comme je n'avais à l'époque jamais touché à MSBuild et que je montais le serveur d'intégration "en sous-marin", je voulais éviter d'y passer 2 jours :)
nop
(http://www.peuw.net)
mardi 19 août 2008 - 17:03
Jérôme
mardi 19 août 2008 - 20:09
En l'occurrence VS était déjà installé sur le serveur, donc je n'ai pas vraiment eu à me poser la question ^_^
nop
(http://www.peuw.net)




mardi 19 août 2008 - 13:22