将变量传递给Jenkins管道中的节点

时间:2017-01-26 16:07:27

标签: jenkins groovy jenkins-pipeline

我有什么看起来像是一个错误,但我不确定,无论哪种方式我都想知道解决它的方法:

这里有两个简单的groovy脚本,可以轻松演示问题:

#!/usr/bin/env groovy
def test_func = { var ->
   println("${var}")
}

stage ("TEST") {
   parallel(
      "Side A" : { test_func("SIDE A") },
      "Side B" : { test_func("SIDE B") })
}

这个功能正如您所期望的那样。詹金斯的相关输出:

[Pipeline] stage
[Pipeline] { (TEST)
[Pipeline] parallel
[Pipeline] [Side A] { (Branch: Side A)
[Pipeline] [Side B] { (Branch: Side B)
[Pipeline] [Side A] echo
[Side A] SIDE A
[Pipeline] }
[Pipeline] [Side B] echo
[Side B] SIDE B
[Pipeline] }
[Pipeline] // parallel
[Pipeline] }
[Pipeline] // stage
[Pipeline] End of Pipeline

好吧,我想说我想做同样的事情,但这次为每一方抓住一个节点:

#!/usr/bin/env groovy
def test_func = { var ->
   node("mynode") {
      println("${var}")
   }
}

stage ("TEST") {
   parallel(
      "Side A" : { test_func("SIDE A") },
      "Side B" : { test_func("SIDE B") })
}

不幸的是,似乎变量" var"没有设定人们的期望:

[Pipeline] stage
[Pipeline] { (TEST)
[Pipeline] parallel
[Pipeline] [Side A] { (Branch: Side A)
[Pipeline] [Side B] { (Branch: Side B)
[Pipeline] [Side A] node
[Pipeline] [Side B] node
[Side B] Running on mynode in /path/to/workspace/branch-FWZZDEZOFZMJGIPOKAJQ7GY7YR7WZLVYNUGHCQ4VVMNFW25VVVBA@2
[Side A] Running on mynode in /path/to/workspace/branch-FWZZDEZOFZMJGIPOKAJQ7GY7YR7WZLVYNUGHCQ4VVMNFW25VVVBA
[Pipeline] [Side A] {
[Pipeline] [Side B] {
[Pipeline] [Side A] echo
[Side A] SIDE B
[Pipeline] [Side A] }
[Pipeline] [Side B] echo
[Side B] SIDE B
[Pipeline] [Side B] }
[Pipeline] [Side A] // node
[Pipeline] [Side B] // node
[Pipeline] [Side A] }
[Pipeline] [Side B] }
[Pipeline] // parallel
[Pipeline] }
[Pipeline] // stage
[Pipeline] End of Pipeline

知道为什么会这样吗?如何才能将此变量正确传递给我的节点?

0 个答案:

没有答案