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

nbnkbykc  于 2022-11-01  发布在  Jenkins
关注(0)|答案(2)|浏览(233)

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

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

还尝试了定义参数= 'ip_range=' +参数.ip_range +“\n”+'远程分支='+环境.BRANCH_NAME
在这两种情况下,只有第一个值作为参数传递给远程作业。
两种方法中jenkins作业的控制台输出

  • 参数:[IP_范围= 1.2.4.5/20,1.56.23.12/32,远程分支=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
                        );
bvpmtnay

bvpmtnay1#

因为参数化的远程触发器插件使用'\n'作为参数的分隔符,所以它不能正常工作。
一个可能的解决方法是创建一个扩展到新行字符的令牌宏。令牌宏扩展是在参数在'\n'上拆分后完成的。

flvlnr44

flvlnr442#

我在原来的仓库上打开了两个PR来改进参数处理,它们已经被接受了。
希望它能很快发布(版本3.1.6.1),发布完成后,您可以在parameters字段中传递Map,将任何内容作为值,包括多行字符串。
它看起来像:

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

请参阅release pagecorresponding JIRA issue

相关问题