Faire Jenkins au courant de la coutume de Package NuGet Source
J'ai une petite question au sujet de Jenkins et de package NuGet de restauration.
Ce que je suis en train de faire est de construire des solutions sur jenkins (qui fonctionne parfaitement bien). Je l'ai activé paquet de restauration de la solution, qui génère de l' .nuget-dossier contenant NuGet.exe, NuGet.Config et NuGet.les cibles.
Sur Jenkins, je suis pulblishing certains projets comme NuGet packages dans un colis privés source sur notre serveur. Je suis à l'aide de ces paquets dans d'autres projets, qui devrait être construit sur jenkins eux-mêmes.
VS connaît le colis privés source, il est configuré dans le global NuGet.Config-file (l'un sous AppData) et il n'est pas désactivé (par défaut).
Maintenant, quand j'essaie de construire une solution qui a besoin d'un package à partir du colis privés source, l'échec de la construction, parce que jenkins ne le savent pas, et est, par conséquent, la validation d'un vide -source
-paramètre lors de la restauration des paquets qui n'est pas en étant remplacé comme jenkins ne sais pas à propos de la coutume de la source.
Ce que j'ai essayé jusqu'à présent
- Je sais déjà que l'ajout de la source privée pour les solutions de NuGet.Config - ou NuGet.Les cibles du fichier
Package-Source
permettrait de résoudre le problème, mais cela voudrait dire, je dois le faire pour chaque solution, je veux construire à l'aide de Jenkins. - J'ai aussi joué un peu avec le config-files dans AppData et ProgramData par l'ajout de la source dans le paquet-source balises dans les fichiers et même l'actif de la source, mais cela n'aide pas
- de cource, de publier les paquets serait une solution, mais ce n'est pas le résultat souhaité, comme nous aimerions ignorer les paquets dans le scm.
En gros, je voudrais savoir si il existe un moyen de faire Jenkins constamment au courant de la privé de la source du package, ou de manipuler les NuGet-installations sur les développeurs maschines, de sorte qu'ils génèrent un NuGet.targets
fichier qui contient le colis privés-source. Une autre solution possible serait un paramètre pour msbuild, je ne suis pas au courant.
Toute aide est grandement appréciée!
Donc, fondamentalement, vous placez la ligne de commande de l'outil (NuGet.exe) sur le serveur de build et de restaurer les paquets par jenkins avant la réalisation est exécuté?
Oui, autant que je sache, cette méthode est actuellement recommandé. Et sur le développeur de les ordinateurs, les paquets sont restaurés par le Nuget-VS-Addin (et non msbuild).
Bien, comme cela répond à ma question, vous pouvez fournir une réponse réelle, je peux accepter;) Merci beaucoup!
OriginalL'auteur nozzleman | 2014-08-05
Vous devez vous connecter pour publier un commentaire.
Pour résumer (et extension) mes commentaires:
Package Nuget restaurer via msbuild est déconseillée dans les versions actuelles de Nuget (2.7 et plus)
Nous utilisons un lot étape dans Jenkins
nuget.exe restore SOLUTIONTOBUILD.sln -source http://nugetserver...
et d'éviter ainsi le problème que le Jenkins service s'exécute dans un autre compte et de recherches pour l' .config dans un endroit différent.
Sur le développeur de les ordinateurs, les paquets sont restaurés par le Nuget-VS-Addin (et non msbuild), donc n'oubliez pas d'annuler les modifications que l'ancien Nuget-VS-Addin peut-être appliqué à votre projet-les fichiers.
Plus d'Informations peuvent être trouvées dans le Nuget-Docs
D'autres sources avec le point-virgule comme séparateur. Vous pouvez avoir besoin de guillemets.
OriginalL'auteur frank koch
Une autre solution à ce problème est d'ajouter votre personnalisé NuGet.config et exécutable dans un répertoire sur le serveur Jenkins, et d'ajouter une étape de génération d'exécuter nuget à l'aide de la configuration personnalisé.
Un NuGet.config ajout d'un package personnalisé source ressemblerait à quelque chose comme ceci:
Autonome nuget.exe peut être téléchargé ici
Cette approche rend plus facile d'ajouter des fils personnalisés pour tous vos jenkins emplois en changeant le même fichier de configuration.
J'ai dû ajouter de la ligne de commande suivante arument: -RepositoryPath %de l'espace de travail%\<path_to_packages_like_in_project>\packages
OriginalL'auteur Fábio Junqueira
[Windows] assurez-vous que le Jenkins compte de service a la permission de voir le package nuget emplacement. Dans mon cas, j'ai été en utilisant un compte administrateur local de compte qui n'ont pas le domaine permanentes nécessaires pour naviguer dans le réseau de l'emplacement de notre NuGet dossier. Aussi, soyez sûr que les paquets ne sont pas imbriquées trop profondément.
OriginalL'auteur daviesdoesit