我有一个接受NodeLabelParameter插件提供的"Node"参数的作业,我想通过"构建"步骤从jenkins"工作流"作业中调用它。
当我将代码段生成器与"构建作业"一起使用时,生成的代码是:
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或更高版本。如果是,并且代码段生成器仍然无法生成有效代码,请提交错误报告。