带有多行字符串Jenkins的参数化远程触发器



我有一个Jenkins作业,它触发了一个远程作业。这两个作业都有一个多行字符串作为参数。我无法将参数传递给远程作业。只有我的输入字符串的第一行被传递给远程作业。

是否不可能用多行字符串触发远程作业?

def parameters = 'ip_range='
params.ip_range.readLines().each{
parameters = parameters + "${it}" + "n"
}
parameters = parameters + "n"+'remote_branch='+env.BRANCH_NAME

也尝试过def parameters="ip_range="+params.ip_range+";\n"+"remote_branch='+env.branch_NAME

在这两种情况下,只有第一个值作为参数传递给远程作业。

来自任一方法的jenkins作业的控制台输出

  • 参数:[ip_range=1.2.4.5/20,1.56.23.12/32,remote_branch=21.4.0/INSURECI-203156]

编辑:远程触发

triggerRemoteJob (
abortTriggeredJob: true,
enhancedLogging: true,
job: "some-remote-url/job/ip-range-test/job/${remoteTriggerBranchName}",
parameters: parameters,
remoteJenkinsName: 'Openshift',
useCrumbCache: true,
useJobInfoCache: true,
maxConn: 5
);

它不会按原样工作,因为参数化远程触发器插件使用'n'作为参数的分隔符。

一种可能的方法是创建一个令牌宏,该宏将扩展到新的行字符。令牌宏扩展是在'n'上对参数进行拆分后完成的。

派对迟到了,但我也很难应付。我在原始存储库上打开了两个PR来改进参数处理,它们已经被接受了。

希望它能很快发布(3.1.6.1版本(,完成后,您可以在parameters字段中传递一个Map,其中包含任意值,包括多行字符串。

它看起来像:

triggerRemoteJob (
job: "MyProduct/Release",
parameters: [
'MULTI_LINE_PARAM': '''
line1
line2
line3
'''.stripIndent()
],
remoteJenkinsName: 'MyCompanyJenkins'
)

请参阅发布页面和相应的JIRA问题。

最新更新