将扩展选择参数值从一个作业传递到 Jenkins 管道中的另一个远程作业

Posted

技术标签:

【中文标题】将扩展选择参数值从一个作业传递到 Jenkins 管道中的另一个远程作业【英文标题】:Passing extended choice parameter value from one job to another remote job in Jenkins pipeline 【发布时间】:2020-12-11 18:41:30 【问题描述】:

我正在开发一个脚本化的 Jenkins 管道,并且我正在使用 triggerRemoteJob 插件来触发另一个 Jenkins 实例上的远程作业。

远程作业有一个扩展的选择参数。

将参数传递给 triggerRemoteJob 插件的语法似乎与 build Job 插件不同。

在使用 triggerRemoteJob 插件时传递扩展选择参数值的正确语法是什么?

编辑

在下面发布了答案。 如果有办法解决 Jenkins 管道中的问题,请将其作为答案发布。

【问题讨论】:

你试过什么?您使用的管道代码是什么,遇到了什么错误? @aalbagarcia 我尝试在使用 triggerRemoteJob 插件时简单地作为参数传递,就像这样 - triggerRemoteJob(job: "job",parameters: "key=value") 。未收到错误,但远程作业上的(扩展选择)参数未填充该值。 【参考方案1】:

据我所知,这些参数没有特殊的类。我一直使用 String 之一,只要您引入了一个有效的选项,它就可以工作:

string(name: 'PARAM', value: "option"),

--- 编辑 ----

我使用以下语法:

    build(job: 'my_job', parameters: [
      string(name: 'PARAMETER', value: 'value'),
    ])

【讨论】:

我在使用 triggerRemoteJob 插件时尝试像这样简单地作为参数传递 - triggerRemoteJob(job: "job",parameters: "key=value")。未收到错误,但远程作业上的(扩展选择)参数未填充该值。它适用于普通字符串参数。 我已经用我使用的语法编辑了我的原始答案,这也可能对你有用。你能试试吗? 我已经尝试过了,它给我的错误是:java.lang.ClassCastException: class org.jenkinsci.plugins.ParameterizedRemoteTrigger.pipeline.RemoteBuildPipelineStep.setParameters() 期望类 java.lang。字符串但收到类 java.util.ArrayList。这就是为什么我必须这样做:triggerRemoteJob(job: "job",parameters: "key=value")【参考方案2】:

参考github中的这个issue thread: https://github.com/jenkinsci/coordinator-plugin/issues/46

似乎是因为Extendedchoice参数不支持jenkins中的接口,调用triggerRemoteJob用ext。不支持选择参数。

【讨论】:

以上是关于将扩展选择参数值从一个作业传递到 Jenkins 管道中的另一个远程作业的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GitLab CI 的管道中将变量的值从一个作业传递到下一个作业?

如何选择来自脚本输出的参数并将其传递给 Bamboo 中的下一个脚本或作业?

詹金斯:传递多个“扩展参数选择”使用URL值

如何将管道中的布尔参数值传递给下游作业?

jenkins 构建触发器 以及参数的传递

如何创建参数化的Jenkins作业?