web-dev-qa-db-de.com

Bedingter Schritt / Stufe der Jenkins-Pipeline

Wie führe ich einen Build-Schritt/eine Build-Stufe nur bei einer bestimmten Verzweigung aus?.

I.E. Führen Sie alles für jede Pull-Anforderung/jeden Zweig aus. Wenn der zu erstellende Zweig den Namen "Deployment" trägt, führen Sie dann auch den Schritt "Deployment" aus.

60
Devonte

Gehen Sie in der deklarativen Pipeline-Syntax genauso vor, wie in den folgenden Beispielen:

stage('master-branch-stuff'){
  agent any
  when{
    branch 'master'
  }
  steps {
    echo 'run this stage - ony if the branch = master branch'
  }
}
stage('feature-branch-stuff') {
    agent label:'test-node'
    when { branch "feature/*" }
    steps {
        echo 'run this stage - only if the branch name started with feature/'
    }
}
stage('expression-branch') {
    agent label:'some-node'
    when {
    expression {
        return env.BRANCH_NAME != 'master';
        }
    }
    steps {
        echo 'run this stage - when branch is not equal to master'
    }
}
stage('env-specific-stuff') {
    agent label:'test-node'
    when { 
      environment name: 'NAME', value: 'this' 
    }
    steps {
        echo 'run this stage - only if the env name and value matches'
    }
}

Effektivere Möglichkeiten - https://issues.jenkins-ci.org/browse/JENKINS-41187
Siehe auch - https://jenkins.io/doc/book/pipeline/syntax/#when


[~ # ~] Update [~ # ~]
Neue WHEN-Klausel
REF: https://jenkins.io/blog/2018/04/09/whats-in-declarative

equals - Vergleicht zwei Werte - Zeichenfolgen, Variablen, Zahlen und Boolesche Werte - und gibt true zurück, wenn sie gleich sind. Ich bin mir ehrlich gesagt nicht sicher, wie wir es versäumt haben, dies früher hinzuzufügen! Sie können Vergleiche mit "nicht gleich" auch mit der Kombination "nicht gleich ..." durchführen.

changeRequest - In der einfachsten Form wird true zurückgegeben, wenn diese Pipeline eine Änderungsanforderung erstellt, z. B. eine GitHub-Pull-Anforderung. Sie können auch detailliertere Prüfungen für die Änderungsanforderung durchführen und die Frage stellen, ob dies eine Änderungsanforderung für die Hauptniederlassung ist. und vieles mehr.

buildingTag - Eine einfache Bedingung, die nur prüft, ob die Pipeline mit einem Tag in SCM ausgeführt wird, und nicht mit einer Verzweigung oder einer bestimmten Commit-Referenz.

tag - Eine detailliertere Entsprechung von buildingTag, mit der Sie den Tag-Namen selbst überprüfen können.

113
Chandan Nayak

Benutze einfach if und env.BRANCH_NAME, Beispiel:

    if (env.BRANCH_NAME == "deployment") {                                          
        ... do some build ...
    } else {                                   
        ... do something else ...
    }                                                                       
36