我有一个像这样的詹金斯风格的脚本:
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 {
....
}
}
}
....
}
Run Code Online (Sandbox Code Playgroud)
创建作业后,无论用户在UI中选中还是取消选中布尔参数,ARGS的值始终为“ --p b1 --- p b2 --p b3”。这意味着shell脚本中存在的三个(如果存在)将始终被评估为true。为什么会这样?
至少对于流水线脚本来说,布尔参数实际上是字符串。所以我执行以下操作:
parameterAsBoolean = (MY_PARAMETER == "true")
Run Code Online (Sandbox Code Playgroud)
小智 5
env和均可使用参数params。当您$b1从中获取它们时访问它们env,而不是params。
所有环境变量本质上都是字符串,因此当您将params作为环境变量访问时,它们始终是字符串。
如果要在键入时访问它们,请使用params:
script {
assert env.b1 instanceof String
assert params.b1 instanceof Boolean
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5390 次 |
| 最近记录: |