webentwicklung-frage-antwort-db.com.de

Wie spezifiziere ich, wann der Zweig NOT (Zweigname) in jenkinsfile ist?

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

20
HosseinK

Mit diesem Problem behoben, können Sie dies jetzt tun:

stage('Example (Not master)') {
   when {
       not {
           branch 'master'
       }
   }
   steps {
     sh 'do-non-master.sh'
   }
}
39
Zac Kwan

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 .

21

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'
            }
        }
    }
}
13
Philip