我正在尝试将我的大型多配置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
我的问题是当我尝试建立一个`build_test_configs`的字典时,到了第13行时
${compilers[j]
和 $configs[i]
是未定义的。看起来第8行的检查工作得很好。
更新
我没有明确的错误信息。脚本不会产生任何运行时错误。意外的输出是阶段的名称为:- Build Test node001 null null
- Build Test node001 null null
- Build Test node002 null null