jenkins - 如何在Jenkins-groovy脚本中传递声明为`def`的变量
问题描述
我试图将变量传递sampleArray
给groovyScript
函数,activeChoiceReactiveParam
不幸的是生成的 xml 没有选择值。我在这个游乐场http://job-dsl.herokuapp.com以及真正的 Jenkins 上试过,但没有成功。我的意思是sampleArray
' 值没有被复制。请告诉我如何实现
job("try-to-pass-array") {
def sampleArray = ["one","two","three","four"]
description("this is to test a element type")
keepDependencies(false)
parameters {
activeChoiceReactiveParam('NUMBERS') {
description('Choose numbers for which build has to be generated')
choiceType('MULTI_SELECT')
groovyScript {
script('return $sampleArray')
fallbackScript('"fallback choice"')
}
}
}
disabled(false)
concurrentBuild(false)
steps {
shell('''
echo $NUMBERS
''')
}
}
解决方案
您没有使用正确的字符串插值。jenkins (declarative pipeline) 文档有一个很好的例子。
def username = 'Jenkins'
echo 'Hello Mr. ${username}'
echo "I said, Hello Mr. ${username}"
会导致:
Hello Mr. ${username}
I said, Hello Mr. Jenkins
因此,如果您想传递变量的值,请始终使用"
and NOT '
。
tl;博士 script("return ${sampleArray}")
推荐阅读
- r - R - (Tidyverse) 根据列整数将一行转换为多行
- ruby - 从 C 函数返回 Ruby 的 Fiddle::Pointer
- python - 查找数据框中的列是否既没有 nan 也没有 none
- php - 在 PHP 中写入新行
- android - Android Studio 中缺少/隐藏的工具窗口
- python - python - 根据来自另一个数据帧2的一系列值(时间)提取数据帧1的值
- javascript - 尝试使用 Material Design lite 卡创建砌体网格
- python - Tensorflow Keras 在自编码器中分别使用编码器和解码器
- python - 共享多处理阵列中的精度损失?
- python - 如何创建一个新的布尔列来处理来自前 n 行的信息