Keine dieser Antworten war für mich mit Jenkins CI v.1.555, Git Client Plugin v.1.6.4 und Git Plugin 2.0.4 ausreichend.
Ich wollte einen Job für ein Git-Repository für ein bestimmtes festes (dh nicht parametrisiertes) Tag erstellen. Ich musste eine Lösung aus den verschiedenen Antworten und dem von Thilo zitierten Blog-Beitrag "Build a Git Tag" zusammenstellen .
- Stellen Sie sicher, dass Sie Ihr Tag mit in das Remote-Repository verschieben
git push --tags
- Klicken Sie im Abschnitt "Git Repository" Ihres Jobs unter der Überschrift "Quellcodeverwaltung" auf "Erweitert".
- Fügen Sie im Feld für Refspec den folgenden Text hinzu:
+refs/tags/*:refs/remotes/origin/tags/*
- Geben Sie unter "Zu erstellende Zweige" den Begriff "Zweigspezifizierer" ein
*/tags/<TAG_TO_BUILD>
(ersetzen Sie ihn <TAG_TO_BUILD>
durch Ihren tatsächlichen Tag-Namen).
Das Hinzufügen der Refspec für mich erwies sich als kritisch. Obwohl es so aussah, als würden die Git-Repositorys standardmäßig alle Remote-Informationen abrufen, als ich sie leer ließ, konnte das Git-Plugin mein Tag dennoch nicht finden. Nur wenn ich im Feld Refspec explizit "Get the Remote Tags" angegeben habe, konnte das Git-Plugin mein Tag identifizieren und daraus erstellen.
Update 2014-5-7 : Leider hat diese Lösung einen unerwünschten Nebeneffekt für Jenkins CI (v.1.555) und den Push-Benachrichtigungsmechanismus des Git-Repositorys à la Stash Webhook an Jenkins : Jedes Mal, wenn ein Zweig im Repository aktualisiert wird Bei einem Push werden die Tag-Build-Jobs ebenfalls erneut ausgelöst. Dies führt dazu, dass immer wieder dieselben Tag-Jobs unnötig neu erstellt werden. Ich habe versucht, die Jobs mit und ohne die Option "Abfrage über Arbeitsbereich erzwingen" zu konfigurieren, und es schien keine Auswirkung zu haben. Die einzige Möglichkeit, Jenkins daran zu hindern, unnötige Builds für die Tag-Jobs zu erstellen, besteht darin, das Feld Refspec zu löschen (dh das Feld zu löschen +refs/tags/*:refs/remotes/origin/tags/*
).
Wenn jemand eine elegantere Lösung findet, bearbeiten Sie diese Antwort bitte mit einem Update. Ich vermute zum Beispiel, dass dies möglicherweise nicht passieren würde, wenn die Referenzspezifikation +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
nicht das Sternchen- Sammelelement wäre . Im Moment funktioniert diese Lösung jedoch für uns. Wir entfernen nur die zusätzliche Refspec, nachdem der Job erfolgreich war.