booleanParam in jenkins dsl
我有一个这样的詹金斯绝妙剧本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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脚本中存在的三个if将始终计算为true。为什么会这样?
参数可从
所有环境变量都是字符串,因此当您将参数作为环境变量访问时,它们始终是字符串。
如果要在键入时访问它们,请使用
1 2 3 4 |
至少对于管道脚本,布尔参数在实际字符串中。所以我要做以下的事情:
1 | parameterAsBoolean = (MY_PARAMETER =="true") |
您试过独立运行shell脚本吗?只是为了确保它按你的意愿运行?
我认为您的语法可能错误,您的值将始终有效,因为它们存在,请检查此值作为参考:如何在shell脚本中声明和使用布尔变量?