Wie kann ich die Erstellung eines anderen Jobs innerhalb von auslösen Jenkinsfile
?
Ich gehe davon aus, dass dieser Job ein weiteres Repository unter derselben Github-Organisation ist , das bereits eine eigene Jenkins-Datei hat.
Ich möchte dies auch nur tun, wenn der Filialname Master ist, da es keinen Sinn macht, Downstream-Builds lokaler Filialen auszulösen.
Aktualisieren:
stage 'test-downstream'
node {
def job = build job: 'some-downtream-job-name'
}
Trotzdem bekomme ich bei der Ausführung eine Fehlermeldung
Es wurde kein parametrisierter Job mit dem Namen some-downtream-job-name gefunden
Ich bin sicher, dass dieser Job in Jenkins existiert und sich im selben Organisationsordner befindet wie der aktuelle. Es ist ein anderer Job, der seinen eigenen hat Jenkinsfile
.
Bitte beachten Sie, dass diese Frage spezifisch für das GitHub Organization Plugin ist, das automatisch Jobs für jedes Repository und jeden Zweig Ihrer GitHub Organization erstellt und verwaltet.
build job: '../other-repo/master', wait: false
build job: '../other-repo/$BRANCH_NAME'
wo$BRANCH_NAME
ist die Jenkins-Umgebungsvariable für den Zweig, in dem das Multibranch-Projekt ausgeführt wird?${BRANCH_NAME}
es als Umgebungsvariable verfügbar ist, reicht eine einfache Zeichenfolgenersetzung aus. Wechseln Sie einfach zu"
von,'
um Ihre Zeichenfolge zu zitieren. zBbuild job: "../other-repo/${BRANCH_NAME}"
build job
: jenkins.io/doc/pipeline/steps/pipeline-build-stepZusätzlich zu den oben genannten Antworten: Ich wollte einen Job mit einem einfachen Parameter starten, der an eine zweite Pipeline übergeben wurde, und fand die Antwort unter https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow .
Also habe ich verwendet:
quelle
build
Befehl aufgerufene BUILD_NUMBER des Jenkins-Jobs zurückgegeben? Wie kann ich in einer der folgenden Phasen auf BUILD_NUMBER zugreifen? Weiß jemand, wo dieser Befehl dokumentiert ist?build job: 'freestyle', parameters: [ string(name: 'param1', value:'test_param'), string(name:'dummy', value: "${index}")]
heutzutage von jenkins.io/doc/pipeline/examples/#jobs-in-parallelbuild job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]]
hat es bei mir nicht funktioniert, aber:build job: 'RunArtInTest', parameters: [string(name: 'systemname', value: "${VALUE}")]
funktioniertDer Befehl
build
in der Pipeline dient dazu, andere Jobs in Jenkins auszulösen.Beispiel auf Github
Der Job muss in Jenkins vorhanden sein und kann parametrisiert werden. Was den Zweig betrifft, kann man ihn wohl von git lesen
quelle
build job: 'jobname
aber ich erhalte diesen FehlerNo parameterized job named jobname found
und kann Ihnen versichern, dass im Organisationsordner ein Job mit diesem Namen auf derselben Ebene vorhanden ist.build job: "${ORGANISATION_NAME}/${REPO_NAME}/master"
/
. Relative Pfade sind in Ordnung; Sorins Problem war wahrscheinlich, dass der Jobaufruf ein Mehrzweigjob warbuild
, was bedeutet, dass ein Pfad wiejobname
der versuchen würde, den Zweigjobname
desselben Jobs aufzubauen . es muss../jobname/branchname
stattdessen seinSie können den
build job
Schritt aus der Jenkins-Pipeline verwenden (Mindestanforderung an Jenkins: 2.130).Hier ist die vollständige API für den
build
Schritt: https://jenkins.io/doc/pipeline/steps/pipeline-build-step/Wie man benutzt
build
:job
: Name eines zu erstellenden Downstream-Jobs. Kann ein anderer Pipeline-Job sein, aber häufiger ein Freestyle- oder ein anderes Projekt.../sister-folder/downstream
/top-level-folder/nested-folder/downstream
Lösen Sie einen anderen Job mit einem Zweig als Parameter aus
In meiner Firma enthalten viele unserer Niederlassungen "/". Sie müssen alle Instanzen von "/" durch "% 2F" ersetzen (wie in der URL des Jobs angegeben).
In diesem Beispiel verwenden wir relative Pfade
Lösen Sie einen anderen Job mit der Build-Nummer als Parameter aus
Lösen Sie viele Jobs parallel aus
Quelle: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
Weitere Informationen zu Parallel finden Sie hier: https://jenkins.io/doc/book/pipeline/syntax/#parallel
Oder alternativ:
quelle
Verwenden Sie das Build Job Plugin für diese Aufgabe, um andere Jobs aus der Jenkins-Datei auszulösen. Sie können Ihrer Ausführung eine Vielzahl von Logik hinzufügen, z. B. Optionen für Parallel, Knoten und Agenten sowie Schritte zum Auslösen externer Jobs. Ich habe dafür ein einfach zu lesendes Kochbuchbeispiel gegeben.
1.Beispiel zum Auslösen eines externen Jobs aus einer Jenkins-Datei mit einem bedingten Beispiel:
2.Beispiel zum Auslösen mehrerer Jobs aus einer Jenkins-Datei mit Beispielen für Bedingungen:
quelle