如何使用 Jenkins JobDSL 在 Git 插件中设置 'Check out to specific local branch'?

How to use Jenkins JobDSL to set 'Check out to specific local branch' in Git Plugin?

我有以下内容:

job {
  scm {
    git {
      remote {
        url(GIT_URL)
      }
      branch('master')
    }
  }
}

它工作得很好,但我希望它能将 'Check out to specific local branch' 设置为 'master'。这是怎么做到的?

我在 https://github.com/jenkinsci/git-plugin/blob/master/src/main/java/hudson/plugins/git/GitSCM.java 中没有找到任何可以使用的东西,但我可能遗漏了一些东西。

作业 DSL 当前不支持该选项,但您可以使用 configure block 修改生成的配置 XML:

job {
  scm {
    git {
      remote {
        url(GIT_URL)
      }
      branch('master')
      configure { node ->
        node / 'extensions' << 'hudson.plugins.git.extensions.impl.LocalBranch' {
          localBranch('master')
        }
      }
    }
  }
}

自已接受的答案写入以来,已添加对 'Check out to specific local branch' 的支持:

job {
  scm {
    git {
      remote {
        url(GIT_URL)
      }
      branch('master')

      extensions {
        localBranch 'master'
      }
    }
  }
}

还有另一种实现命名本地分支的方法:

multibranchPipelineJob(pathToJob) {
    branchSources { ... }
    configure {
        def traits = it / sources / data / 'jenkins.branch.BranchSource' / source / traits
        traits << 'jenkins.plugins.git.traits.LocalBranchTrait' {
            localBranch('**')
        }
    }
}