如何使用Jenkins Pipeline检出Pull-Request?

Tho*_*sch 5 git github jenkins jenkins-pipeline

我想构建一个集成多个存储库的管道。

总体思路:

  1. 提供分支名称作为输入。
  2. 使用GitHub-API在多个项目中查找Pull-Request,这些项目是从具有该名称的分支创建的。
  3. 从多个存储库进行(浅)克隆,并检出指定的Pull-Requests。

请注意,我不是在尝试从Pull-Request触发构建本身。触发作业只是一个普通的管道脚本。因此checkout scm不适用于我的情况。我很高兴从Pull-Requests触发此操作。但是,许多Jenkins的Multi-Branch插件对我没有帮助,因为它们仅假定单个存储库是构建的一部分。

到目前为止,我大部分时间都避免打gitsh招呼,因为这将使我接近抛弃所有Jenkins-Git集成。

我如何才能使用Pipeline checkout方法直接签出Pull-Request?

这甚至在checkout方法范围内吗?大概,我正在寻找的是直接与Jenkins的JGit客户端进行交互,这时我可能会同样使用sh命令...

Tho*_*sch 5

事实证明,这可以通过在结帐配置对象上设置 refspec 属性来实现:

checkoutConfig.with {
    branches = [[ name: 'pr/4711' ]]
    userRemoteConfigs[0].refspec = '+refs/pull/*/head:refs/remotes/origin/pr/*'
}
Run Code Online (Sandbox Code Playgroud)

另见:https : //gist.github.com/piscisaureus/3342247