Wie überzeugen jenkins zu teilen, eine build-Nummer für mehrere Arbeitsplätze?
Ich habe eine Anforderung aus den team-Entwicklung, um den setup-build-system so jedem build haben eine einzigartige build-Nummer für alle Filialen.
Die builds sind von jenkins mit Arbeitsplätzen für jeden Zweig.
Es ist ein jenkins plugin, das setup die nächsten buildnumber für einen job, aber das ist irgendwie nutzlos für mindestens zwei Gründen:
- es die build-Nummer für einen einzelnen job und Sie können nicht wissen, wie das setup es für alle Branchen, weil Sie können entfernt oder Hinzugefügt werden jederzeit
- es nicht, legen Sie für die aktuelle build
Wie bekommen wir die build-Nummern: wir machen eine HTTP-Aufruf mit der Niederlassung name und die Revisionsnummer in git/mercurial. Auf dieser Grundlage die zentralen Server gibt uns eine build-Nummer als Antwort. Wenn Sie nennen es zweimal mit den gleichen Parametern auf, erhalten Sie die gleiche Antwort (gewünschtes Verhalten).
Nun, wie können wir optimieren, jenkins verwenden die gleichen build-Nummern als uns? Natürlich könnte ich die build-Nummer zurückgegeben, die von der Skript, aber der job Nummer anders sein würde, und ich bezweifle, jenkins, wird wissen, dass ich Sie berührte, die BUILD_NUMBER variable in meinem script.
Wesentlichen das, was ich brauchen, ist eine Art pre-job-start-script, das ich ausführen kann, eine, die ausgeführt wird, bevor der build-Nummer zugeordnet ist, um den job.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Umwelt-Injektor-Plugin die Bewertung eines Groovy-Skripts vor Ihrer Ausführung. Ich habe fast die gleichen Anforderung, jedoch für mich, nur die Arbeitsplätze mit den gleichen
job_prefix_
in Ihrem Namen gemeinsam ist die einzigartigenextBuildNumber
(in anderen Worten, andere Arbeitsplätze mitjob_prefix2_
in Ihren Namen teilen Sie einem anderennextBuildNumber
).In der
Evaluated Groovy Script
Abschnitt, verwenden Sie bitte:Nahm ich dnozay Antwort, aber zumindest für Jenkins 1.586, das funktioniert nicht wirklich gut bei mir. Hier sind die Probleme, die ich hatte:
BUILD_NUMBER
variable, die ich verwenden in der Arbeit. Es scheint, dass die Einstellung BUILD_NUMBER an dieser Stelle, auch wennOverride Build Parameters
festgelegt ist, ist zu spät.nextBuildNumber
wird erhöht, sowohl durch dieses Skript und Jenkins.So, hier ist eine aktualisierte version basierend auf seine Antwort:
Wieder, alle Kredit geht an dnzay für das original-Skript.
Edit: bei der Schaffung neuer Arbeitsplätze, eine alte laufen muss, bevor Sie die neue lieben, sonst werden Sie beginnen mit 1.
Check-out die Build-Name-Setter-Plugin und Beschreibung Setter-Plugin. Sie RegEx verwenden und/oder Variablen zu setzen, bauen Eigenschaften nach dem erstellen, basierend auf der build-Ausgabe.
Zum Beispiel, könnten Sie mit diesem RegEx:
und diese Ersatz-string
können Sie den build-Beschreibung.
Wenn Ihr Ersatz-Zeichenfolge nicht enthalten, etwas einzigartiges erstellen (z.B.
${BUILD_NUMBER}
), schlage ich vor, dass Sie sich nicht ändern die build-name, da könnte es mehrere builds für die gleiche repository-revision.Nun, wie man mehrere jobs haben, basiert auf der repository-revision ist eine andere Sache! Es scheint, dass parametrisierte builds gestartet werden kann über einen HTTP-POST. Also, Sie haben könnte einen job bekommt, ausgelöst durch ein SCM ändern, und verwendet eine HTTP-tool (z.B. wget) zu planen Sie jede parametrisierte job.