如何使用NodeLabelParameter插件中的参数和Jenkins Workflow的"构建"步骤

mer*_*ien 5 groovy jenkins jenkins-workflow

我有一个接受NodeLabelParameter插件提供的"Node"参数的工作,我想通过"构建"步骤从jenkins"Workflow"工作中调用它.

当我使用Snippet Generator和"Build a job"时,生成的代码是:

build job: 'test job', parameters: [<object of type org.jvnet.jenkins.plugins.nodelabelparameter.NodeParameterValue>]
Run Code Online (Sandbox Code Playgroud)

当然这是无效的.

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

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

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

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)
...
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Jes*_*ick 8

例外情况是因为您有一组无关的方括号.尝试

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

但是首选语法是这样的

build job: 'test job', parameters: [[$class: 'NodeParameterValue', name: 'UPSTREAM_NODE', labels: ['my_node'], nodeEligibility: [$class: 'AllNodeEligibility']]]
Run Code Online (Sandbox Code Playgroud)

假设您使用此修复程序运行Workflow 1.3或更高版本,这就是我期望Snippet Generator生成的内容.如果您是,并且Snippet Generator仍然无法生成有效代码,请提交错误报告.