Wie weiß ich, dass die build-Nummer für das aktuelle Projekt in Jenkins?
Ich bin mir bewusst, das BUILD_NUMBER
- Umgebungsvariable; jedoch, wenn ich mich nicht Irre, ist dies ein globalen variable, die zu sein scheint, die gemeinsam von allen Projekten. Dies ist ein problem, da, wenn ich zwei Agenten ausführen von jobs, ein Skript kann versuchen, das aktuelle Projekt die build-Nummer nach der anderen Skript aktualisiert hat, die es für ein anderes Projekt.
Hier ist ein Beispiel-Szenario:
- Job J1 beginnt, die Ausführung der script - S.
BUILD_NUMBER
ist derzeit, sagen wir mal, 500. - Jemand manuell startet job J2, die setzt jetzt
BUILD_NUMBER
etwas ganz anderes, sagen wir, 750. - Skript S, das noch läuft, erreicht jetzt den Punkt, wo es tatsächlich verwendet
BUILD_NUMBER
nun 750 (ein unmöglicher Wert für die job - J1, die nur bis zu 500).
Bin ich richtig in diesem Verständnis? Wenn ja, wie behebe ich dieses problem?
- Ich bin ziemlich sicher, dein Verständnis ist falsch. Warum gehst du nicht einfach zwei jobs, die sagen, schläft für eine Weile, und dann druckt die BUILD_NUMBER, nur für sich selbst zu sehen?
- Leow: Aber das ist genau das, was ich getan habe! Es ist sehr merkwürdig. Ich denke, ich werde versuchen eine andere Erklärung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
BUILD_NUMBER ist nicht global für das system. Es ist lokal zu jedem job. In deinem Beispiel J1 und J2 haben unterschiedliche BUILD_NUMBER (J1=500, J2-750) Werte, und Sie werden konstant bleiben - im-job - für die Dauer der Tätigkeit.
BUILD_NUMBER
671, trotz der Tatsache, dass der J1 die build-Nummern gingen nur bis zu 305... mittlerweile, die neueste build-Nummer J2 671). Ich denke, es muss eine andere Erklärung; jede Idee, was es sein könnte?Können Sie die neuesten (abgeschlossen oder derzeit in der Ausführung) build-Nummer mit:
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/buildNumber
oder aus dem job selbst, können Sie die environment-variable:
${BUILD_NUMBER}
Können Sie alle anderen permalinks zu, wie:
/lastStableBuild/
/lastSuccessfulBuild/
/lastFailedBuild/
und so weiter.
Es sei denn, Sie werden anpassen der build-Nummer mit einem plugin wie Neben Build-Nummer, Ihre nächsten build-Nummer ist immer ein Schrittweite, um die neuesten build-Nummer.
Die build-Nummern sind pro Auftrag. Sie sind nicht global environment-Variablen.
Jedes mal wenn ein job ausgeführt wird, Kopien/erbt vorhandenen environment-Variablen in eine neue Sitzung. Jenkins/Hudson fügt dann alle job-Parameter und zusätzliche Variablen (einschließlich
${BUILD_NUMBER}
) auf die neue session. Sie sind als Umgebungsvariablen verfügbar nur für die Dauer der Sitzung (d.h. für die Dauer des Jobs). Sobald der Auftrag abgeschlossen ist, diese session zerstört wird (zusammen mit all den zusätzlichen Variablen, die für die Sitzung generiert wurde).Du nicht Zugriff auf die Umgebung Variablen einen job-run/Sitzung von einem anderen job-run/Sitzung. Sie kann jedoch den Zugriff auf die
/lastBuild/buildNumber
von einem anderen job über die URL-Methode, die ich zur Verfügung gestellt. Sie können auch auf/lastBuild/buildTimestamp
auf die gleiche Weise.Zugang job-Parameter von einem anderen job, die Sie verwenden können:
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/json
oder
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/xml
aber würden Sie brauchen, um analysieren Sie die Ausgabe für das, was Sie brauchen.
Verwenden Sie die Get-Next-Build-Nummer-plugin.
https://wiki.jenkins-ci.org/display/JENKINS/Next+Erstellen+Nummer+Plugin