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?
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:
In einem externen Prozess, z. B. in sh
step, handelt es sich um eine tatsächliche Umgebungsvariable, also
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
, 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.
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 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.
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 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.
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
Tags und Links jenkins jenkins-pipeline groovy jenkins-plugins jenkins-workflow