variables - Jenkins Groovy 并行变量不工作

标签 variables jenkins groovy parallel-processing

我正在使用以下脚本运行 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 中看到过类似的问题)。不是专家,但它似乎与 eachforeach 构造提供的常规闭包和外部变量范围界定有关。 例如(类似于您的示例):

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/

相关文章:

PHP:如何在类中创建动态变量

perl - 什么时候需要我们的关键字?

Jenkins 管道插件如何运行并行任务

grails - 如何使用Groovy MarkupBuilder在节点末尾打印纯内容?

linux - 打印包含命令的变量

javascript - JavaScript 变量的生命周期

github - 如何让 Jenkins 自动为流水线作业添加 webhook?

Jenkinsfile 步骤检查目录中的文件是否已更改?

powershell - 如何在上游作业中获取下游作业的控制台输出?

unit-testing - Spock - 将集合上的断言扩展为单独的测试,例如 @Unroll