Wie kann ich in meiner Jenkins-Datei Folgendes angeben?
wenn Zweig nicht x
Ich weiß, wie man branchenspezifische Aufgaben spezifiziert:
stage('Master Branch Tasks') {
when {
branch "master"
}
steps {
sh '''#!/bin/bash -l
Do some stuff here
'''
}
}
Ich möchte jedoch eine Phase angeben, für die der Zweig nicht als Master fungiert, oder wie folgt inszenieren:
stage('Example') {
if (env.BRANCH_NAME != 'master' && env.BRANCH_NAME != 'staging') {
echo 'This is not master or staging'
} else {
echo 'things and stuff'
}
}
Dies funktioniert jedoch nicht und schlägt mit den folgenden Fehlern fehl:
WorkflowScript: 62: Not a valid stage section definition: "if
WorkflowScript: 62: Nothing to execute within stage "Example"
Quellenangabe für meinen fehlgeschlagenen Versuch: https://jenkins.io/doc/book/pipeline/syntax/#flow-control
Mit diesem Problem behoben, können Sie dies jetzt tun:
stage('Example (Not master)') {
when {
not {
branch 'master'
}
}
steps {
sh 'do-non-master.sh'
}
}
Sie können auch mehrere Bedingungen (in diesem Fall Zweignamen) mit anyOf
angeben:
stage('Example (Not master nor staging)') {
when {
not {
anyOf {
branch 'master';
branch 'staging'
}
}
}
steps {
sh 'do-non-master-nor-staging.sh'
}
}
In diesem Fall do-non-master-nor-staging.sh
wird auf allen Zweigen ausgeführt, außer auf master und staging.
Sie können sich über die eingebauten Bedingungen und die allgemeine Pipeline-Syntax informieren hier .
Der Link aus Ihrem Beitrag zeigt ein Beispiel mit der Skript-Pipeline-Syntax. Ihr Code verwendet die deklarative Pipeline-Syntax. Um die Skript-Pipeline innerhalb der Deklaration zu verwenden, können Sie den Skriptschritt verwenden.
stage('Example') {
steps {
script {
if (env.BRANCH_NAME != 'master' && env.BRANCH_NAME != 'staging') {
echo 'This is not master or staging'
} else {
echo 'things and stuff'
}
}
}
}