使用 Jenkins 工作流多分支插件拉取当前分支

Pull the current branch with Jenkins workflow multibranch plugin

我已经设置了 Jenkins,并且正在使用 Jenkins 工作流多分支插件。我已将其配置为监听任何分支的 GitHub 回购中的提交。

这是在其中一个分支中提交的 Jenkinsfile 样本:

node {
   // Mark the code checkout 'stage'....
   stage 'Checkout'

   // Get some code from a GitHub repository
   git url: 'git@github.com:Me/my-repo.git', credentialsId: '###'

   // Get the maven tool.
   // ** NOTE: This 'M3' maven tool must be configured
   // **       in the global configuration.
   def mvnHome = tool 'M3'

   stage 'Build'
   sh "${mvnHome}/bin/mvn clean install"
}

当我在此分支中提交内容时,会触发构建。问题是 git 签出主分支而不是当前正在构建的分支。

如何签出当前版本的分支?


目前的解决方案

  1. 使用 checkout scm 而不是 git url: 'git@github.com:Me/my-repo.git', credentialsId: '###' 这样您就可以签出当前分支。
  2. 使用分支变量 - 检查此以获取更多信息:

在您的 Jenkinsfile 中,在 git 行的 branch 参数中添加要结帐的分支名称:

git {...}, branch: 'branch-name'

一些构建触发器设置一个包含分支名称的环境变量(例如,Gerrit Trigger Plugin 设置 GERRIT_BRANCH),这将允许您将 branch 设置为该环境变量而不是每个分支硬编码。