如何在 Jenkins Workflow 的 "build" 步骤中使用 NodeLabelParameter 插件中的参数

How to use a parameter from NodeLabelParameter Plugin with the "build" step of Jenkins Workflow

我有一个作业需要 NodeLabelParameter 插件提供的 "Node" 参数,我想通过 "build" 步骤从 jenkins "Workflow" 作业中调用它。

当我将代码段生成器与 "Build a job" 一起使用时,生成的代码是:

build job: 'test job', parameters: [<object of type org.jvnet.jenkins.plugins.nodelabelparameter.NodeParameterValue>]

当然这是无效的。

我试过了(我在 NodeLabelParameter 插件代码中找到了这个构造函数):

build job: 'test job', parameters: [[new org.jvnet.jenkins.plugins.nodelabelparameter.NodeParameterValue('UPSTREAM_NODE', '', 'my_node')]]

但构建失败并出现此异常:

java.lang.ClassCastException: org.jenkinsci.plugins.workflow.support.steps.build.BuildTriggerStep.parameters expects class hudson.model.ParameterValue but received class java.util.ArrayList
at org.jenkinsci.plugins.workflow.structs.DescribableHelper.coerce(DescribableHelper.java:250)
...

从工作流作业中使用此类参数的正确语法是什么?

谢谢

异常是因为您有一组无关的方括号。尝试

build job: 'test job', parameters: [new org.jvnet.jenkins.plugins.nodelabelparameter.NodeParameterValue('UPSTREAM_NODE', '', 'my_node')]

然而,首选语法类似于

build job: 'test job', parameters: [[$class: 'NodeParameterValue', name: 'UPSTREAM_NODE', labels: ['my_node'], nodeEligibility: [$class: 'AllNodeEligibility']]]

这是我希望代码段生成器生成的内容,假设您是 运行 工作流版本 1.3 或更高版本 this fix。如果是,并且代码段生成器仍然无法生成有效代码,请提交错误报告。