Résoudre le problème du CCNetArtifactDirectory
dans CruiseControl.net
Mettre en place un système de construction automatisé peut s’avérer délicat, surtout lorsqu’il s’agit de configurations spécifiques à la plate-forme. Un défi courant auquel les développeurs sont confrontés est l’intégration de CruiseControl.net
avec la tâche MSBuild
. Cet article de blog a pour objectif de clarifier comment utiliser efficacement le CCNetArtifactDirectory
, en veillant à ce que vos sorties de construction soient gérées correctement sans modifications inutiles des fichiers de projet.
Comprendre le problème
Vous pourriez avoir rencontré un problème lors de la configuration de CruiseControl.net impliquant la configuration de la tâche MSBuild
. La question principale est :
Comment puis-je utiliser efficacement le
CCNetArtifactDirectory
dans MSBuild sans provoquer d’erreurs dans mon processus de construction ?
La confusion provient du fait que même si le CCNetArtifactDirectory
est censé être passé à MSBuild automatiquement, de nombreux utilisateurs constatent qu’ils ne peuvent pas le référencer correctement dans leurs arguments de construction. Une erreur courante que vous pourriez voir est :
ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Référence à un symbole inconnu CCNetArtifactDirectory
Plongeons dans une solution.
La solution
Ne vous inquiétez pas du CCNetArtifactDirectory
La bonne nouvelle est que vous n’avez pas besoin de spécifier directement le CCNetArtifactDirectory
dans vos commandes MSBuild. Par défaut, CruiseControl.net passe ce répertoire à MSBuild, qui se charge de placer la sortie de la construction dans l’emplacement approprié basé sur le répertoire de travail spécifié dans votre configuration.
Voici un exemple de configuration :
<executable>c:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\data\projects\FooSolution\</workingDirectory>
<projectFile>FooSolution.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug</buildArgs>
Emplacement de sortie
Avec la configuration ci-dessus, la sortie de vos constructions sera dirigée vers :
C:\data\projects\FooSolution\[NomDuProjet]\bin\Debug
Cela signifie que les artefacts sont générés correctement sans que vous ayez à vous soucier de spécifier le CCNetArtifactDirectory
.
Personnalisation de l’emplacement de sortie
Cependant, si vous souhaitez diriger votre sortie vers un autre emplacement, vous pouvez le faire via la section <publishers>
de votre configuration CruiseControl.net.
Voici comment personnaliser le répertoire de sortie :
<publishers>
<xmllogger />
<buildpublisher>
<sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
<publishDir>C:\published\FooSolution\</publishDir>
<useLabelSubDirectory>false</useLabelSubDirectory>
</buildpublisher>
</publishers>
Dans cet exemple de configuration :
sourceDir
: Spécifiez le répertoire à partir duquel MSBuild publiera les artefacts.publishDir
: Définissez la destination où vous souhaitez publier les sorties de construction.useLabelSubDirectory
: Cette option peut être activée ou désactivée pour inclure ou exclure les répertoires de label dans votre chemin de publication.
Résumé
Intégrer CruiseControl.net avec MSBuild ne doit pas être une tâche redoutable. En reconnaissant que vous n’avez pas besoin de référencer directement le CCNetArtifactDirectory
, vous pouvez rationaliser efficacement votre processus de construction. Si vous devez un jour rediriger les sorties de construction, il vous suffit de configurer la section <publishers>
en conséquence.
Avec ces solutions en main, vous serez mieux équipé pour gérer vos configurations de construction automatisées sans effort.
Cela conclut notre aperçu sur la gestion des problèmes de CCNetArtifactDirectory
dans CruiseControl.net lors de l’utilisation de MSBuild. Embrassez cette connaissance pour améliorer votre flux de travail et rendre votre expérience de développement plus fluide !