J'ai des problèmes pour que Jenkins crée une balise spécifiée. La balise fait partie d'une construction paramétrée, mais je ne sais pas comment la transmettre au plugin git pour simplement construire cette balise. Cela a pris 3 heures de ma journée et j'ai concédé la défaite aux maîtres au débordement de pile.
120
Réponses:
J'ai pu le faire en utilisant le paramètre "branches à construire":
Remplacez [tag-name] par le nom de votre tag.
la source
HEAD
. La logique du plugin git semble comparer ces deux révisions, qui dans mon dépôt sont toujours inégales et donc une nouvelle construction est toujours déclenchée.Aucune de ces réponses ne me suffisait, en utilisant Jenkins CI v.1.555, le plugin Git Client v.1.6.4 et le plugin Git 2.0.4.
Je voulais un travail à construire pour un référentiel Git pour une balise spécifique, fixe (c'est-à-dire non paramétrée). J'ai dû concocter une solution à partir des différentes réponses ainsi que du billet de blog "build a Git tag" cité par Thilo .
git push --tags
+refs/tags/*:refs/remotes/origin/tags/*
*/tags/<TAG_TO_BUILD>
(en remplaçant<TAG_TO_BUILD>
par votre nom de balise actuel).L'ajout de Refspec pour moi s'est avéré essentiel. Bien qu'il semblait que les dépôts git récupéraient toutes les informations distantes par défaut lorsque je les laissais vides, le plugin Git échouerait néanmoins complètement à trouver ma balise. Ce n'est que lorsque j'ai explicitement spécifié "obtenir les balises distantes" dans le champ Refspec que le plugin Git a pu identifier et construire à partir de ma balise.
Mise à jour 2014-5-7 : Malheureusement, cette solution a un effet secondaire indésirable pour Jenkins CI (v.1.555) et le mécanisme de notification push du référentiel Git à la Stash Webhook to Jenkins : à chaque fois qu'une branche du référentiel est mise à jour dans une poussée, les travaux de construction de balise se déclencheront également à nouveau. Cela conduit à de nombreuses reconstructions inutiles des mêmes tâches de balise, encore et encore. J'ai essayé de configurer les travaux avec et sans l'option «Forcer l'interrogation à l'aide de l'espace de travail», et cela semblait n'avoir aucun effet. La seule façon que je pourrais empêcher Jenkins de faire les builds inutiles pour les tâches de balise est de vider le champ Refspec (c'est-à-dire supprimer le
+refs/tags/*:refs/remotes/origin/tags/*
).Si quelqu'un trouve une solution plus élégante, veuillez modifier cette réponse avec une mise à jour. Je soupçonne, par exemple, que cela ne se produirait peut-être pas si le refspec était spécifiquement
+refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
plutôt que l'astérisque fourre-tout. Pour l'instant, cependant, cette solution fonctionne pour nous, nous supprimons simplement le Refspec supplémentaire une fois le travail réussi.la source
+refs/heads/*:refs/remotes/origin/*
il le sera maintenant+refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/remotes/origin/tags/*
. (Je n'ai pas beaucoup travaillé avec les refspecs, il a donc fallu quelques expérimentations pour apprendre que ce champ est délimité par des espaces.)Vous ne pouvez pas dire à Jenkins de construire à partir d'un nom de référence? Si c'est le cas, c'est
De toutes les questions que je vois sur Jenkins et Hudson, je suggère de passer à TeamCity. Je n'ai eu à modifier aucun fichier de configuration pour que TeamCity fonctionne.
la source
git push --tags
Si vous utilisez des pipelines Jenkins et que vous souhaitez extraire une balise spécifique (par exemple: un
TAG
paramètre de votre build), voici ce que vous pouvez faire:la source
Dans un dernier Jenkins (1.639 et supérieur), vous pouvez:
la source
1.0.1
) dans le champ branches à construire.J'ai fait quelque chose comme ça et ça a marché:
Le journal Jenkins a confirmé qu'il obtenait la source de la balise
Vérification de la révision
0b4d6e810546663e931cccb45640583b596c24b9
(v0.9.5.2)la source
refspec
était l'astuce en cliquant sur le bouton Avancé.J'ai défini le champ Advanced-> Refspec sur
refs/tags/[your tag name]
. Cela semble plus simple que les diverses autres suggestions pour Refspec, mais cela a très bien fonctionné pour moi.MISE À JOUR 23/7/2014 - En fait, après d'autres tests, il s'avère que cela n'a pas fonctionné comme prévu. Il semble que la version HEAD était toujours en cours d'extraction. Veuillez annuler ceci comme réponse acceptée. J'ai fini par obtenir une solution fonctionnelle en suivant le post de gotgenes dans ce fil (30 mars). Le problème mentionné dans cet article de déclenchement inutile de builds n'était pas un problème pour moi, car mon travail est déclenché à partir d'un travail en amont, et non de l'interrogation de SCM.
MISE À JOUR AVR-2018 - Notez dans les commentaires que cela fonctionne pour une personne et est d'accord avec la documentation Jenkins.
la source
refs/tags/<tagname>
est ce que la documentation Jenkins dit qu'il faut utiliser, et cela fonctionne très bien pour moi. Peut-être que le plugin était bogué au moment de la publication originale, mais ... en avril 2018, c'est la bonne réponse.refs/tags
préfixe et simplement l'utiliser<tagname>
. YMMV, mais ... ça marche bien pour mes besoins.J'ai pu demander à Jenkins de créer une balise en définissant le Refspec et le spécificateur de branche comme détaillé dans cet article de blog .
J'ai également dû définir le nom du référentiel (sur "origin" dans mon cas) afin de pouvoir le référencer dans le Refspec (sinon, il utiliserait apparemment un nom généré aléatoirement).
la source
Ce que j'ai fait à la fin était:
jenkins-target
et a demandé à Jenkins de suivre celajenkins-target
jenkins-target
brancheJe ne sais pas si cela fonctionnera pour tout le monde, mon projet était assez petit, pas trop de balises et de trucs, mais c'est très facile à faire, ne pas avoir à jouer avec les refspecs et les paramètres et tout ça :-)
la source
Vous pouvez même créer un type de balise, par exemple
1.2.3-alpha43
, en utilisant des caractères génériques:Refspec:
+refs/tags/*:refs/remotes/origin/tags/*
Spécificateur de branche:
origin/tags/1.2.3-alpha*
Vous pouvez également cocher " Construire lorsqu'une modification est envoyée sur GitHub " pour déclencher la transmission, mais vous devez ajouter une action "Créer" au webhook
la source
Ajout de mes deux cents ici car je n'ai pas vu de réponse qui utilise l'option "Construire avec des paramètres" dans Jenkins.
Ici, j'utilise la console de navigateur Jenkins CI pour le projet starwars_api et j'ai pu construire directement avec "Build with parameters" avec la valeur refs / tags / tag-name
construire avec le nom de la balise ref
la source