Jenkins Workflow Checkout Zugriff auf BRANCH_NAME und GIT_COMMIT

8

Ich kann anscheinend nicht $ GIT_COMMIT und $ BRANCH_NAME aus einem Jenkins Workflow Checkout-Schritt extrahieren.

Ich würde gerne in der Lage sein, diese Informationen an meine Gradle-Skripte zu senden, um sie an externe Quellen wie statische Analyse usw. weiterzugeben.

Momentan versuche ich das auszuführen:

%Vor%

Und ich möchte Folgendes oder etwas ähnliches erreichen:

%Vor%

Oder vielleicht würde das auch funktionieren:

%Vor%

Ich habe das folgende Problem gefunden, das anscheinend gelöst ist, aber es funktioniert nicht in Version 1.15:

Ссылка

Hat jemand irgendwelche Ideen, wie man das umgehen kann oder ob es eine Variable gibt, die ich nicht finden kann?

    
Oldek 30.03.2016, 09:03
quelle

3 Antworten

22

Zunächst einmal

%Vor%

ist nicht gültig Groovy, oder zumindest nicht, was du denkst. Vielleicht meintest du

%Vor%

was wäre nur eine alberne Art zu schreiben

%Vor%

Anyway-Umgebungsvariablen sind momentan nicht direkt als Groovy-Variablen in Pipeline verfügbar (es gibt einen Vorschlag, dies zuzulassen); Sie müssen die globale Variable env verwenden:

%Vor%

In einem externen Prozess, z. B. in sh step, handelt es sich um eine tatsächliche Umgebungsvariable, also

%Vor%

funktioniert (beachte, dass ' bedeutet, dass Groovy nicht die Variable interpoliert).

JENKINS-30252 bezog sich jetzt auf Multi-Branch-Projekte. Wenn Sie einen eigenständigen Pipeline-Job erstellt haben, wird diese Variable nicht festgelegt.

Wie auch immer, in Ihrem Fall prüft Ihr checkout Schritt immer den master Zweig. Wenn Sie tatsächlich ein Multi-Branch-Projekt haben, sollte Ihr Jenkinsfile

verwenden %Vor%

, die einen Commit auf dem richtigen Zweig auscheckt (immer mit der Revision von Jenkinsfile selbst übereinstimmend).

Was den Commit-Hash betrifft, JENKINS-26100 ist dies nicht automatisch verfügbar, aber Sie können benutze etwas wie

%Vor%

um darauf zuzugreifen.

    
Jesse Glick 31.03.2016 11:29
quelle
5

Ich habe zwei Jenkins-Instanzen.

In beiden Fällen sind die Umgebungsvariablen GIT_COMMIT und BRANCH_NAME nicht definiert.

Wenn ich versuche, sie vom Rückgabewert von checkout() call abzurufen, verhält sich jede Instanz anders.

Jenkins-Instanz 1

Jenkins Version: 2.46.1

"Pipeline: SCM Step" Plugin Version: 2.5

Versuchen Sie, auf die Umgebungsvariable zuzugreifen, wie in der checkout Dokumentation beschrieben schlägt fehl.

%Vor%

scmVars gibt NULL zurück und der Zugriff auf scmVars.GIT_BRANCH schlägt mit der Ausnahme java.lang.NullPointerException: Cannot get property 'GIT_BRANCH' on null object fehl.

Also musste ich Folgendes tun, um den Zweig zu bekommen:

%Vor%

Jenkins-Instanz 2

Jenkins Version: 2.60.2

"Pipeline: SCM Step" Plugin Version: 2.6

In diesem Fall könnte ich Folgendes mit Erfolg tun:

%Vor%

Bitte überprüfen Sie, welcher Ansatz für Ihre Jenkins-Instanz funktioniert und verwenden Sie ihn.

    
Antony 23.08.2017 16:43
quelle
0

Wenn Sie auf die Umgebungsvariable BRANCH_NAME von Jenkins als Shell-Skript zugreifen möchten, verwenden Sie das folgende Snippet.

sh 'echo Branch Name: $BRANCH_NAME'

Die Antwort sollte wie folgt sein:

Branch Name: the_checkedout_branch

    
Eazhilan Nagarajan 19.02.2018 11:20
quelle