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

Jenkins 我想在“中传递标签值”;“限制此项目可以运行的位置”;动态场,jenkins,Jenkins,我有两份自由式的工作,分别是JOB1和JOB2。JOB1必须在主机上运行,而JOB2必须在从机上运行。我有3个节点。 现在我想在其中一个节点上运行我的下游作业,即JOB2。一种方法是硬核心,即在“限制此项目可以运行的位置”字段中手动提供标签名称。但是,我希望它自动将节点转移到下游作业将运行的位置 是否有办法使用“限制此项目可以运行的位置”复选框,并且值将为“%variable%”,其中“variable”将保留/是选择参数的变量/值之一。简单地说,为什么“Restrict…”的值不能允许变量替换

我有两份自由式的工作,分别是JOB1和JOB2。JOB1必须在主机上运行,而JOB2必须在从机上运行。我有3个节点。 现在我想在其中一个节点上运行我的下游作业,即JOB2。一种方法是硬核心,即在“限制此项目可以运行的位置”字段中手动提供标签名称。但是,我希望它自动将节点转移到下游作业将运行的位置

是否有办法使用“限制此项目可以运行的位置”复选框,并且值将为“%variable%”,其中“variable”将保留/是选择参数的变量/值之一。简单地说,为什么“Restrict…”的值不能允许变量替换。我只想在配置文件的“Restrict where this project can run”字段中传递该值


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

据我所知,作业配置中的“限制此项目可以运行的位置”框中不支持变量,它需要是您在Jenkins设置中设置的节点名

解决方法可以是:

2个作业,带有一个.tpl文件和一些powershell

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

  • Build onRestricted-现在标签将声明上面的参数,并将在该节点上运行

  • 不幸的是,这不是最容易做到的事情,但是如果你已经在Jenkins上为你的工作准备好了模板,那就不会太难了

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

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

    在下游作业中,需要按如下方式配置Label参数: