2016-11-28 81 views
0

我有詹金斯Groovy腳本是這樣的:booleanParam在詹金斯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 { 
       .... 
       } 
      } 

     } 

    .... 
    } 

的創造就業機會的不管用戶選中或取消選中UI中的布爾參數之後,ARGS值將始終「 - p b1 --- p b2 - p b3「。這意味着如果存在於shell腳本中的三個值總是被評估爲true。爲什麼會發生?

回答

2

至少在管道的腳本,布爾參數是在現實中的字符串。所以,我做到以下幾點:

parameterAsBoolean = (MY_PARAMETER == "true") 
0

參數可從兩個envparams。當你以$b1的身份訪問它們時,你可以從env得到它們,而不是params

所有環境變量是由它們的性質串,所以當你訪問PARAMS的環境變量,它們是總是字符串。

如果你想訪問他們,因爲他們是有類型的,使用params

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