\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:22

tu compiles directement avec devenv, c'est un peu crade non ? pourquoi ne pas utiliser msbuild ?
Jérôme

mardi 19 août 2008 - 13:41

C'est pas forcément crade, ça dépend de ce que tu as besoin de faire.
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 :)

mardi 19 août 2008 - 17:03

ok, quand je dis que c'est crade, c'est que ça oblige à installer VS sur le serveur alors que le SDK suffit avec msbuild. mais bon, au final, certains projets comme les setup ne se compilent pas avec msbuild alors ...
Jérôme

mardi 19 août 2008 - 20:09

Ah oui, certes, je ne l'avais pas vu comme ça, tu as raison.
En l'occurrence VS était déjà installé sur le serveur, donc je n'ai pas vraiment eu à me poser la question ^_^

Réagir :






(ne sera pas affiché - gravatar)
(si vous ne le connaissez pas, voir cette page)
(mais qu'est-ce que c'est ? - télécharger)



  • Pour faire du gras gras : <b>gras</b>
  • Pour faire de l'italique : <i>italique</i>
  • Pour souligner : <u>souligné</u>
  • Pour barrer : <s>barré</s>
  • Pour faire un citation : <blockquote>citation</blockquote>
  • Pour faire un lien : <a href="adresse du lien">texte du lien</a>
  • Pour mettre une image : <img src="adresse de l'image"/>
  • nop se gratte l'oreille : /me se gratte l'oreille