使用 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 签出主分支而不是当前正在构建的分支。
如何签出当前版本的分支?
目前的解决方案
- 使用
checkout scm
而不是 git url: 'git@github.com:Me/my-repo.git', credentialsId: '###'
这样您就可以签出当前分支。
- 使用分支变量 - 检查此以获取更多信息:
在您的 Jenkinsfile
中,在 git
行的 branch
参数中添加要结帐的分支名称:
git {...}, branch: 'branch-name'
一些构建触发器设置一个包含分支名称的环境变量(例如,Gerrit Trigger Plugin 设置 GERRIT_BRANCH
),这将允许您将 branch
设置为该环境变量而不是每个分支硬编码。
我已经设置了 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 签出主分支而不是当前正在构建的分支。
如何签出当前版本的分支?
目前的解决方案
- 使用
checkout scm
而不是git url: 'git@github.com:Me/my-repo.git', credentialsId: '###'
这样您就可以签出当前分支。 - 使用分支变量 - 检查此以获取更多信息:
在您的 Jenkinsfile
中,在 git
行的 branch
参数中添加要结帐的分支名称:
git {...}, branch: 'branch-name'
一些构建触发器设置一个包含分支名称的环境变量(例如,Gerrit Trigger Plugin 设置 GERRIT_BRANCH
),这将允许您将 branch
设置为该环境变量而不是每个分支硬编码。