将扩展选择参数值从一个作业传递到 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 的管道中将变量的值从一个作业传递到下一个作业?