小编典典

Jenkins Groovy并行变量不起作用

jenkins

我正在使用以下脚本运行Jenkins Build Flow插件:

def builds = [:]

[1,2].each { 
  builds[it] = { build("test", parm: ("$it"))  }
}

parallel builds

但是,尽管正确填充了哈希(builds [it]),但parm始终为null。我也尝试了以下方法:

builds[it] = { build("test", parm: $it))  }
builds[it] = { build("test", parm: it))  }

但是它始终为空。

任何人都可以给我关于如何使用$ it或构建作业中任何其他变量的任何指示。


阅读 535

收藏
2020-07-25

共1个答案

小编典典

似乎您在Build Flow Plugin中遇到了一个错误(我已经看到了Pipeline
DSL的类似问题)。没有专家,但它似乎与groovy闭包以及由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

如预期的那样。因此,请使用局部变量存储迭代值。

2020-07-25