groovy - 如何通过 Jenkins 工作流的 "build"步骤使用 NodeLabelParameter 插件中的参数

标签 groovy jenkins jenkins-workflow

我有一个作业需要 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)
...

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

谢谢

最佳答案

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

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 。如果您是这样,并且代码片段生成器仍然无法生成有效的代码,请提交错误报告。

关于groovy - 如何通过 Jenkins 工作流的 "build"步骤使用 NodeLabelParameter 插件中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794804/

相关文章:

jenkins - 如何以编程方式触发通过 github-organization 管理的特定 jenkins 构建?

jenkins 并行工作流插件因 java.io.NotSerializableException : hudson. plugins.sshslaves.SSHLauncher 而失败

android - 从 Pipeline 项目发布 Android Lint 结果

java - 如何在java中捕获groovy抛出的异常?

python - 标准化特定语言的发布/工具组

grails - 为什么我无法使用 grails 框架 1.3.7 中安装的 spring security 和 weceem 插件登录

在 Jenkins 中使用自定义工作区并运行基于 TestNG 的 Selenium 测试的 shell 脚本时出现 java.nio.file.AccessDeniedException 错误

maven-2 - Maven 依赖 groovy

jenkins - 在 Jenkins 构建管道中下载工件

jenkins - 当下游正在运行时阻止上游 Jenkins 作业