【发布时间】:2017-10-03 23:12:41
【问题描述】:
我正在尝试将我的大型多配置 Jenkins 作业转换为管道语法,以便除其他外,我可以将其拆分到多个节点并将多个阶段合并为一项作业。这是我遇到问题的部分:
def build_test_configs = [:]
def compilers = ['gnu', 'icc']
def configs = ['debug', 'default', 'opt']
for (int i = 0; i < configs.size(); i++) {
for (int j = 0; j < compilers.size(); j++) {
def node_name = ""
if ("${compilers[j]}" == "gnu") {
node_name = "node001"
} else {
node_name = "node002"
}
build_test_configs["${node_name} ${configs[i]}"] = {
node ("${node_name}") {
stage("Build Test ${node_name} ${compilers[j]} ${configs[i]}") {
unstash "${node_name}-tarball"
sh "$HOME/software/jenkins_scripts/nightly.sh ${configs[i]} ${compilers[j]} yes $WORKSPACE"
}
}
}
}
}
parallel build_test_configs
我的问题是 ${compilers[j] 和 $configs[i] 在第 13 行尝试建立 build_test_configs 字典的部分时未定义。看来第 8 行的检查是工作得很好。
更新
我本身没有错误消息。该脚本不会产生任何运行时错误。出乎意料的输出是阶段的名称是:
- 构建测试 node001 null null
- 构建测试 node001 null null
- 构建测试 node002 null null
nightly.sh 脚本也正在传递null 参数。
【问题讨论】:
-
好问题!也许在这里转储错误消息?
-
噢!很抱歉忽略了@KevinBurnett。我已更新问题以包含输出。
-
是的。我正在简化我的脚本并错过了那个。它已被修复。谢谢@HuguesMoreau。
标签: jenkins groovy jenkins-pipeline