一尘不染

如何通过Jenkins Workflow的“ build”步骤使用NodeLabelParameter插件中的参数

jenkins

我有一个工作,它接受由NodeLabelParameter插件提供的“节点”参数,我想通过“构建”步骤从詹金斯的“工作流程”工作中调用它。

当我将代码段生成器与“构建工作”一起使用时,生成的代码为:

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)
...

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

谢谢


阅读 490

收藏
2020-07-25

共1个答案

一尘不染

例外是因为您有一组多余的方括号。尝试

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']]]

假设您正在使用此修复程序运行Workflow
1.3或更高版本,这就是我希望代码段生成器产生的效果。如果是这样,并且代码段生成器仍然无法生成有效的代码,请提交错误报告。

2020-07-25