J'ai des problèmes pour que Jenkins construise une balise spécifiée. La balise fait partie d'une construction paramétrée, mais je ne sais pas comment transmettre cela 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.
J'ai pu le faire en utilisant le paramètre "branches to build":
Branch Specifier (blank for default): tags/[tag-name]
Remplacez [nom-tag] par le nom de votre tag.
Aucune de ces réponses ne m'a suffi, à l'aide de Jenkins CI v.1.555, du plugin Git Client v.1.6.4 et du plugin Git 2.0.4.
Je voulais qu'un travail soit créé pour un référentiel Git pour une balise fixe (c'est-à-dire non paramétrée) spécifique. J'ai dû bricoler une solution à partir des différentes réponses plus le message de blog "construire un tag Git"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).Ajouter le Refspec pour moi s’est avéré crucial. Même s'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 ne parviendrait néanmoins pas à trouver mon tag. Ce n’est que lorsque j’ai explicitement spécifié "obtenir les balises distantes" dans le champ Refspec que le plug-in Git était capable d’identifier et de construire à partir de ma balise.
Update 2014-5-7 : Malheureusement, cette solution a un effet secondaire indésirable sur Jenkins CI (v.1.555) et le référentiel Git. Push Mécanisme de notification à la Stash Webhook to Jenkins : à tout moment , toute branche du référentiel est mise à jour dans un Push, les tâches de construction de balises sont également réactivées. Cela conduit à de nombreuses reconstructions inutiles des mêmes tâches de tag, encore et encore. J'ai essayé de configurer les travaux avec et sans l'option "Forcer l'interrogation à l'aide d'un espace de travail", et cela n'a eu aucun effet. Le seul moyen pour empêcher Jenkins de créer des constructions inutiles pour les tâches de tag est d'effacer le champ Refspec (c'est-à-dire, supprimer le +refs/tags/*:refs/remotes/Origin/tags/*
).
Si quelqu'un trouve une solution plus élégante, modifiez 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.
Ne pouvez-vous pas dire à Jenkins de construire à partir d'un nom de référence? Si oui, alors
refs/tags/tag-name
Parmi toutes les questions que je vois sur Jenkins et Hudson, je suggérerais de passer à TeamCity. Je n'ai eu à éditer aucun fichier de configuration pour que TeamCity fonctionne.
Si vous utilisez des pipelines Jenkins et souhaitez extraire une balise spécifique (par exemple: un paramètre TAG
de votre construction), voici ce que vous pouvez faire:
stage('Checkout') {
steps {
checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: 'YOUR_GIT_REPO_URL.git', credentialsId: 'YOUR_GIT_CREDENTIALS_ID' ]], branches: [[name: 'refs/tags/${TAG}']]], poll: false
}
}
J'ai fait quelque chose comme ça et ça a marché:
Source Code Management
Git
Repositories
Advance
Name: ref
Refspec : +refs/tags/*:refs/remotes/Origin/tags/*
Branches to build
Branch Specifier (blank for 'any') : v0.9.5.2
Le journal Jenkins a confirmé qu'il obtenait la source de la balise
Vérification de la révision 0b4d6e810546663e931cccb45640583b596c24b9
(v0.9.5.2)
Je règle le champ Advanced-> Refspec sur refs/tags/[your tag name]
. Cela semble plus simple que les diverses autres suggestions de Refspec, mais cela a très bien fonctionné pour moi.
UPDATE 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 en tant que réponse acceptée. J'ai fini par trouver une solution de travail en suivant le message de gotgenes dans ce fil (30ème Mars). Le problème mentionné dans ce message, qui était de déclencher des générations inutiles, n'était pas un problème pour moi, car mon travail est déclenché à partir d'un travail en amont, et non à partir de l'interrogation SCM.
UPDATE APR-2018 - Notez dans les commentaires que cela fonctionne pour une personne et est conforme à la documentation de Jenkins.
Dans une dernière version de Jenkins (1.639 et plus), vous pouvez:
J'ai pu obtenir que Jenkins construise une balise en définissant Refspec et Branch Specifier comme détaillé dans ce billet de blog .
Je devais également définir le nom du référentiel (sur "Origine" dans mon cas) pour pouvoir le référencer dans Refspec (sinon, il utiliserait apparemment un nom généré de manière aléatoire).
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 aussi cocher " Build quand un changement est poussé vers GitHub " pour déclencher le Push, mais vous devez ajouter "créer" action sur le Webhook
Ce que j'ai fait à la fin était:
jenkins-target
, et jenkins le suitjenkins-target
jenkins-target
Je ne sais pas si cela fonctionnera pour tout le monde, mon projet était plutôt petit, pas trop de balises et autres choses, mais c'est très facile à faire, il ne faut pas perdre son temps avec les références, les paramètres et d'autres choses :-)
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