我正在使用以下脚本运行 Jenkins Build Flow 插件:
def builds = [:]
[1,2].each {
builds[it] = { build("test", parm: ("$it")) }
}
parallel builds
然而,虽然散列 (builds[it]) 被正确填充,但参数始终为空。我还尝试了以下方法:
builds[it] = { build("test", parm: $it)) }
builds[it] = { build("test", parm: it)) }
但它始终为空。
谁能给我任何关于如何在构建作业中使用 $it 或任何其他变量的指示。
最佳答案
您似乎在 Build Flow Plugin 中遇到了一个错误(我在 Pipeline DSL 中看到过类似的问题)。不是专家,但它似乎与 each
或 foreach
构造提供的常规闭包和外部变量范围界定有关。
例如(类似于您的示例):
def builds = [:]
[1,2].each {
builds[a] = { print "${it}\n" }
}
parallel builds
打印:
null
null
同时:
def builds = [:]
[1,2].each {
def a = it;
builds[a] = { print "${a}\n" }
}
parallel builds
将打印
1
2
如预期。因此,使用局部变量来存储迭代值。
关于variables - Jenkins Groovy 并行变量不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42039851/