2016-08-08 51 views
4

Ich setze eine Jenkins-Pipeline Jenkinsfile und ich würde gerne überprüfen, ob ein BooleanParameter gesetzt ist.Wie schreibe ich eine if-Anweisung in Bezug auf einen BooleanParameter in Jenkins-Pipeline Jenkinsfile richtig?

Hier ist der relevante Teil der Datei:

node ("master") { 
     stage 'Setup' (
       [[$class: 'BooleanParameterValue', name: 'BUILD_SNAPSHOT', value: 'Boolean.valueOf(BUILD_SNAPSHOT)']], 

Wie ich verstehe, dass die Art und Weise ist es, die BooleanParameter zugreifen, aber ich bin nicht sicher, wie die IF-Anweisung selbst zu erklären.

Ich dachte an wie etwas zu tun:

if(BooleanParameterValue['BUILD_SNAPSHOT']){... 

Was ist der richtige Weg ist bitte diese Aussage zu schreiben?

Antwort

7

Die Antwort ist eigentlich viel einfacher als das! Nach dem pipeline documention, wenn Sie einen boolean Parameter definieren isFoo Sie es in Ihrem Groovy seinen Namen zugreifen können mit nur, so würde das Skript tatsächlich aussehen:

node { 
    stage 'Setup' 
    echo "${isFoo}" // Usage inside a string 
    if(isFoo) {  // Very simple "if" usage 
     echo "Param isFoo is true" 
     ... 
    } 
} 

Und übrigens, haben Sie wahrscheinlich should'nt Rufen Sie Ihren Parameter BUILD_SNAPSHOT aber vielleicht buildSnapshot oder isBuildSnapshot weil es ein Parameter und keine Konstante ist.

+1

Ich habe irgendwie das gleiche Problem. Ihre Lösung funktioniert, wenn "isFoo" wahr ist, aber nicht, wenn sie auf false gesetzt ist. Auf meiner Seite, echo "$ {isFoo}" "druckt" false ", aber ich sehe immer noch" Param isFoo ist wahr ". Ich benutzte den Generator, um boolsche Parametereigenschaften zu erzeugen. – GabLeRoux

+3

ok stellte sich heraus, dass dies nicht gut dokumentiert ist. Ich habe es geschafft, das funktioniert, ich habe eine Antwort auf eine ähnliche Frage hier veröffentlicht: http://StackOverflow.com/A/41276956/1092815 – GabLeRoux