Jenkins Groovy 并行变量不起作用

baz*_*000 2 variables parallel-processing groovy jenkins

我正在使用以下脚本运行 Jenkins 构建流程插件:

def builds = [:]

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

parallel builds 
Run Code Online (Sandbox Code Playgroud)

然而,虽然哈希 (builds[it]) 被正确填充,但 parm 始终为空。我还尝试过以下操作:

builds[it] = { build("test", parm: $it))  }
builds[it] = { build("test", parm: it))  }
Run Code Online (Sandbox Code Playgroud)

但它始终为空。

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

Jon*_*n S 6

似乎您在 Build Flow Plugin 中遇到了错误(我在 Pipeline DSL 中也看到过类似的问题)。each不是专家,但它似乎与常规闭包和由或构造提供的外部变量的范围有关foreach。例如(类似于你的例子):

def builds = [:]

[1,2].each { 
  builds[a] = { print "${it}\n"  }
}

parallel builds
Run Code Online (Sandbox Code Playgroud)

印刷:

null
null
Run Code Online (Sandbox Code Playgroud)

尽管:

def builds = [:]

[1,2].each { 
  def a = it;
  builds[a] = { print "${a}\n"  }
}

parallel builds 
Run Code Online (Sandbox Code Playgroud)

将打印

1
2
Run Code Online (Sandbox Code Playgroud)

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