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 !