我想动态地在“限制此项目可以运行的位置”字段中传递标签值

时间:2018-01-04 07:58:15

标签: jenkins

我有两个自由式工作,说JOB1和JOB2。 JOB1必须在master上运行,而JOB2在slave上运行。我有3个节点。 现在我想在其中一个节点上运行我的下游作业,即JOB2。一种方法是硬编码,即在“限制该项目可以运行的地方”字段中手动提供标签名称。但是,我希望它自动占用我的下游作业所在的节点。

是否有办法使用“限制此项目可以运行的位置”复选框,值将为“%variable%”,其中'variable'将保持/是选项参数的变量/值之一。简单来说,为什么不能为“Restrict ...”赋值允许变量替换。我想在配置文件中传递“限制此项目可以运行的位置”字段中的值。

注意 - 我已经安装了NodeLabel参数插件。任何帮助都会非常感谢!!

2 个答案:

答案 0 :(得分:0)

据我所知,"限制可以运行该项目的地方不支持变量"在作业配置中,它必须是您在Jenkins设置中设置的节点名称。

解决方法可能是:

2个作业,包含.tpl文件和一些powershell。

  1. Get-RestrictedName - 这将接受您的参数,然后您可以通过powershell访问env变量以传递到您的脚本,然后将使用您的参数运行groovy文件的模板,这将成为DSL的label()参数,渲染模板,然后它将为您提供.groovy文件。然后使用作业DSL处理该groovy文件,该文件成为作业2

  2. Build-onRestricted - 现在您的标签将说明上面的参数,它将在该节点上运行。

  3. 不幸的是,这不是最简单的事情,但如果你已经为Jenkins的工作准备了模板,那就不会太难了

答案 1 :(得分:0)

您需要NodeLabel Parameter Plugin

假设您的上游作业读取了配置文件(包含节点名称),则将使用 NodeLabel参数 将该变量传递给下游作业(JOB2) >

Upstream

myValue 是存储从配置文件获取的节点名称的变量。

在下游作业中,您需要按以下方式配置标签参数:

Downstream