2017-09-19 5 views
1

J'essaie d'apprendre à utiliser Go CD pour implémenter une intégration continue dans le flux de travail de mon entreprise. J'utilise GitHub pour mon contrôle de source et mon pipeline est configuré pour surveiller les modifications du référentiel et tenter de reconstruire chaque fois qu'il y a un changement. Tout cela fonctionne bien. Maintenant, j'essaie d'ajouter des tests unitaires au pipeline et je n'arrive pas à construire le projet de test unitaire.Comment faire pour GoCD restaurer des paquets NuGet lors de la construction de la solution

C'est le xml de config pour ma commande build:

<exec command="%Windir%\Microsoft.NET\Framework64\v4.0.30319\MsBuild.exe" workingdir="UnitTest"> 
    <arg>/T:rebuild</arg> 
    <arg>/P:Configuration=Release</arg> 
    <arg>/m</arg> 
    <runif status="passed" /> 
</exec> 

Ceci est la partie pertinente de l'erreur que je reçois:

Le fichier manquant est .. \ packages \ MSTest.TestAdapter.1.1.18 \ build \ net45 \ MSTest.TestAdapter.props

Le projet de test unitaire utilise du NuGet pa ckages, donc il a besoin de ces fichiers pour construire correctement, mais ils ne sont pas dans le répertoire de travail pour GoCD. J'ai ajouté un travail à mon pipeline avant d'essayer de construire les tests unitaires qui restaure les paquets NuGet à l'emplacement spécifié dans le message d'erreur. Voici le xml de config pour ma commande restore pépite:

<exec command="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\ReadyRoll\Octopack\build\NuGet.exe" workingdir="UnitTest"> 
    <arg>restore</arg> 
    <arg>packages.config</arg> 
    <arg>-PackagesDirectory</arg> 
    <arg>..\packages</arg> 
    <runif status="passed" /> 
</exec> 

Quand je re-couru le pipeline et surveillais le répertoire de travail, je vois les fichiers NuGet sont créées lorsque l'étape « restauration » est exécuté, mais la construction du projet de test unitaire supprime les fichiers et je reçois toujours l'erreur. Je pensais que c'était parce que j'utilisais/T: rebuild dans ma commande MSBuild, mais il supprimait toujours les fichiers quand je l'ai changé en/T: build. Est-ce que quelqu'un peut me donner un conseil sur comment ajouter un travail à mon pipeline qui construit un projet en utilisant des paquets NuGet? J'ai pensé à ajouter la commande "NuGet.exe restore" au fichier de projet, mais je ne pouvais pas comprendre comment le faire (ou si cela peut être fait?).

Merci d'avance!

Répondre

0

J'ai compris ce que je faisais de mal. J'ai mis en place les commandes de construction et de restauration dans des travaux séparés, j'ai dû faire les deux tâches dans le même travail. Je l'ai fait, et cela a fonctionné.

Je pense que cela a quelque chose à voir avec la façon dont GoCD vérifie le matériel pour chaque travail. Mais depuis que je suis si nouveau à cela (et peut-être pas raison sur les raisons), je ne vais pas spéculer sur pourquoi cela a changé le fait fonctionner.

Si quelqu'un connaît la raison, je serais heureux de savoir.