2016-11-28 6 views
0

ich ein jenkins groovy Skript wie diese:booleanParam in jenkins dsl

freeStyleJob(“test”) { 
     properties { githubProjectUrl(‘…’) } 
     description(‘’’job description’’’.stripMargin('|')) 

     logRotator{ numToKeep(100) } 

     parameters { 
      stringParam(’STRINGP1’, "", “STRINGP1 description”) 
      stringParam('STRINGP2’, "", “StringP2 description”) 
      booleanParam(‘b1’, false) 
      booleanParam(‘b2’, false) 
      booleanParam(‘b3’, false) 
      stringParam("EMAIL_LIST", "", "Emails") 
     } 

     scm { 
      github(‘repo’, '${STRINGP1}', 'git', ‘giturl’) 
     } 

     steps { 
      shell '''|#!/bin/bash 
       |ARGS="" 
       |fi 
       |if [[ ‘${b1}’ ]]; then 
       | ARGS=$ARGS" —-p b1” 
       |fi 
       |if [[ ‘${b2}’ ]]; then 
       | OS_ARGS=$ARGS" —-p b2” 
       |fi 
       |if [[ ‘${b3}’ ]]; then 
       | ARGS=$ARGS" —-p b3” 
       |fi     
       |echo ${ARGS}'''.stripMargin('|') 

     } 

     publishers { 
      archiveArtifacts { 
       pattern(‘pattern’) 
      } 

      extendedEmail { 
       .... 
       } 
      } 

     } 

    .... 
    } 

Nach der Schaffung von Arbeitsplätzen ganz gleich, ob Benutzer überprüft oder die Booleschen Parameter in der Benutzeroberfläche unchecks, wäre der Wert für ARGS immer " - p b1 --- p b2 - p b3 ". Das bedeutet, dass die drei, falls diese im Shell-Skript vorhanden sind, immer als wahr ausgewertet werden. Warum passiert das?

Antwort

0

Haben Sie versucht, Ihr Shell-Skript eigenständig auszuführen? Nur um sicherzustellen, dass es so funktioniert, wie Sie es möchten.

Ich denke, Ihre Syntax falsch sein könnte, immer Sie Werte gültig sein wird, da sie vorhanden sind, überprüfen Sie bitte diese ein als Referenz: How to declare and use boolean variables in shell script?

2

Mindestens für Pipeline-Skripte, Boolean Parameter in Wirklichkeit Strings sind. Also habe ich folgendes tun:

parameterAsBoolean = (MY_PARAMETER == "true") 
0

Parameter beide sind von env und params. Wenn Sie auf sie als $b1 zugreifen, erhalten Sie sie von env, nicht params.

Alle Umgebungsvariablen so Strings durch ihre Natur sind, wenn Sie params als Umgebungsvariablen zugreifen, sind sie immer Saiten.

Wenn Sie wollen, dass sie den Zugriff auf, während sie geschrieben werden, verwenden params:

script { 
    assert env.b1 instanceof String 
    assert params.b1 instanceof Boolean 
} 
Verwandte Themen