【发布时间】:2019-10-14 08:15:47
【问题描述】:
在 Jenkins 管道的上下文中,我有一些 Groovy 代码枚举一个列表,创建闭包,然后在闭包中使用该值作为在映射中查找另一个值的键。这似乎几乎每次都充斥着某种异常或竞争条件。
这是对代码的简化:
def tasks = [:]
for (platformName in platforms) {
// ...
tasks[platformName] = {
def componentUploadPath = componentUploadPaths[platformName]
echo "Uploading for platform [${platformName}] to [${componentUploadPath}]."
// ...
}
tasks.failFast = true
parallel(tasks)
platforms 有两个值。我通常会看到两个迭代和两个注册的任务,tasks 中的键是正确的,但是在闭包中的 echo 语句表明我们只是在其中一个平台上运行了两次:
14:20:02 [platform2] Uploading for platform [platform1] to [some_path/platform1].
14:20:02 [platform1] Uploading for platform [platform1] to [some_path/platform1].
这太荒谬了。
我需要添加什么或做些不同的事情?
【问题讨论】:
-
“几乎每次”?所以你看到它工作了吗?
标签: jenkins groovy jenkins-pipeline jenkins-groovy