it-swarm.com.de

jenkins lösen build aus, wenn ein neuer Tag freigegeben wird

Ich möchte Jenkins so konfigurieren, dass es mit dem Erstellen beginnt, wenn ein neues Tag in einem Zweig eines Git-Repositorys veröffentlicht wird. Wie konfiguriere ich dieses Verhalten?

Ich bin sehr neu in Jenkins, also entschuldige mich, wenn dies eine sehr grundlegende Frage sein könnte, aber ich konnte es selbst nicht herausfinden. 

git jenkins config

Auslösen: build trigger

Danke für jede Hilfe

35
Kingalione

Was meinst du mit neuem Tag? Hat es einen Vorlagennamen?

Sie können es sicher in Advanced -> Refspec -> refs/tags/{tagname} definieren.

Sie können sogar refs/tags/* tun, um wirklich JEDE neue Tags zu finden.

enter image description here

14
Stan E

setze refspec auf: +refs/tags/*:refs/remotes/Origin/tags/*

Verzweigungsangabe: **

Aktivieren Sie unter Build-Auslösern die Option "Erstellen", wenn eine Änderung an GitHub gesendet wird

22
albertski

Beachten Sie, dass der Ansatz in die Antwort von stanjer nicht dazu führt, dass Jenkins neue Tags auslöst, wenn sie auf Commits verweisen, die zuvor erstellt wurden. Wenn Sie beispielsweise Release v1.0.0 mit Tags versehen (damit Jenkins diese Version implementieren kann), müssen Sie künftig ein Rollback auf v1.0.0 durchführen und das Festschreiben erneut kennzeichnen. Bei v1.0.0-Rollback wird Jenkins jedoch kein Deployment durchführen rollback, da der Hash, auf den das Tag zeigt, überprüft wird, nicht der Hash des Tags selbst.

Zusammenfassend können jenkins nur neue Tags erstellen, wenn sie auf Commits verweisen, die noch nicht mit einem Tag versehen sind.

Es wäre großartig, wenn man Jenkins als CD-Tool verwenden könnte, das mit Tags für Implementierungen und Rollbacks arbeitet.

Weitere Informationen finden Sie hier https://groups.google.com/forum/#!msg/jenkinsci-users/mYxtDNMz1ZI/xbX9-xM9BQAJ

4
Samuel Henrique

Vorher funktioniert nicht bei mir. In meinem Fall arbeitet refspec in einfachen Anführungszeichen: 

Refspec : '+ refs/tags/*': 'refs/remotes/Origin/tags /*' Branch Specifier : **/tags/**

UPDATE: Ich habe Jenkins 2.120. Um eine Arbeit zu machen, die durch ein Tag ausgelöst wird, müssen folgende Schritte ausgeführt werden:

1) Job erstellen mit:

Refspec : '+ refs/tags/*': 'refs/remotes/Origin/tags /*' Branch Specifier : **/tags/**

2) Build ausführen

3) Konfigurieren Sie denselben Job erneut mit Parametern:

Refspec : '+ refs/tags/*': 'refs/remotes/Origin/tags /*' Branch Specifier : **

4) Build ausführen

5) Konfigurieren Sie denselben Job erneut mit Parametern:

Refspec : '+ refs/tags/*': 'refs/remotes/Origin/tags /*' Branch Specifier : **/tags/**

6) Führen Sie den Build aus 

Erst nach diesen magischen Schritten, wenn ich den Zweig markiere, wird automatisch Jenkins ausgelöst

0
Sergey

Die @ Albertski-Antwort funktioniert, aber vergessen Sie die folgenden zusätzlichen Einstellungen nicht: 1. Richten Sie den Hook von Bitbucket auf Jenkins ein. 2. Das Polling-SCM muss überprüft werden

Sie können den Trigger testen, indem Sie ein neues Git-Tag aus einem Commit in Ihrem Bitbucket-Repo hinzufügen.

0
efrenster