Jenkins管道从作业DSL不匹配的分支是固定的,当重新保存而不修改,为什么?为什么?

nhaq1z21  于 12个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(71)

我正在使用工作DSL插件创建一个Jenkins多分支管道作业。
生成的作业将不匹配我的git repo的任何分支:

Checking branches...
  Checking branch feature/xyz
    Does not meet criteria
  Checking branch main
    Does not meet criteria
  Checking branch release/1.0.0
    Does not meet criteria

当我打开生成的作业的配置,然后点击“保存”(不做任何更改),repo再次被扫描,这一次分支将匹配:

Checking branches...
  Checking branch feature/xyz
    Met criteria
  Checking branch main
    Met criteria
  Checking branch release/1.0.0
    Met criteria

当我查看原始作业与“保存”作业的 * config.xml * 文件时,差异如下:
原始的 * config.xml *(通过工作目录)

<sources class="jenkins.branch.MultiBranchProject$BranchSourceList">

更新 * config.xml *(保存未修改的配置后)

<sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="[email protected]_8ea_8a_724">

也就是说,最初通过job DSL插件创建的 config.xml 没有“plugin”属性,但“保存”未修改的配置被jenkins重写并添加了“plugin”属性。
我不确定为什么重写作业配置(没有任何实际更改)会修复分支扫描问题。这里有插件问题吗?我需要调整我的工作DSL来指定一个特定的插件吗?如果是的话,是怎么做到的?
使用:

  • Jenkins2.422
  • Jenkins Job DSL plugin 1.84
  • Jenkins分支API插件2.1122.v09cb_8ea_8a_724
mzmfm0qo

mzmfm0qo1#

找到解决办法了。
DSL包括以下内容:

factory {
  remoteJenkinsFileWorkflowBranchProjectFactory {
    remoteJenkinsFileSCM {
      gitSCM  { ...

我没有为这个远程SCM指定Jenkinsfile的路径,因为文档中提到了以下内容:

  • 管道脚本检出内的相对位置。请注意,它将始终在Groovy沙箱中运行。如果为空,则默认为Jenkinsfile。*

关于默认值的那一点是不正确的。我必须手动指定路径,即使我使用的是默认值:

factory {
  remoteJenkinsFileWorkflowBranchProjectFactory {
    remoteJenkinsFile 'Jenkinsfile'
    remoteJenkinsFileSCM {
      gitSCM  { ...

现在,DSL生成的作业将识别分支。万岁!

相关问题