我有一个名为MyTests
的布尔参数作为构建作业的一部分。该作业调用Groovy脚本。我相信下面的特定代码会导致脚本中出现问题。想知道在Groovy中正确引用if语句中的布尔值。
stage("post_build") {
if (${params.MyTests}) {
my_code_block...
}
java.lang.NoSuchMethodError:在步骤
中找不到这样的DSL方法'$'
答案 0 :(得分:1)
删除${...}
并直接写param.MyTests
。只有在引用变量(或常规groovy / java表达式) 字符串时才应使用${...}
。所以:
def foo = "bar"
echo foo
echo "Withing a string: ${foo}"
所以在你的情况下:
stage("post_build") {
if (params.MyTests) {
my_code_block...
}
...
答案 1 :(得分:0)
请参阅Pipeline Syntax, Flow Control:
stage('Example') {
if (env.BRANCH_NAME == 'master') {
echo 'I only execute on the master branch'
}
}
我想说,如果您希望确保类型一致,最好始终使用
params
对象。将参数引用为foo
或env.foo
会返回注入环境变量时的值,并始终为String
类型。properties([parameters([booleanParam(defaultValue: false, description: '', name: 'foo')])]) echo "foo: " + foo.getClass().toString() echo "env.foo: " + env.foo.getClass().toString() echo "params.foo: " + params.foo.getClass().toString()
返回:
[Pipeline] echo foo: class java.lang.String [Pipeline] echo env.foo: class java.lang.String [Pipeline] echo params.foo: class java.lang.Boolean [Pipeline]