我需要项目的当前分支名称,我正在部署插件, 因此,插件的groovy类中当前分支名称的代码就像这样,
def getCurrentGitBranch() {
def gitBranch = "Unknown branch"
try {
def workingDir = new File(ProjectConfig.projectDir)
def result = 'git rev-parse --abbrev-ref HEAD'.execute(null, workingDir)
result.waitFor()
if (result.exitValue() == 0) {
gitBranch = result.text.trim()
}
} catch (Exception e) {
throw new Exception("Problem occurred while fetching current branch name from git.")
}
log.info("Branch Name [ "+ gitBranch + "]")
return gitBranch
}
但出于某些原因,当使用jenkins在云上部署项目时,此函数返回HEAD而不是我正在尝试部署的项目的当前分支。
我尝试了很多不同的场景,但没有运气,我如何确保我正在使用的插件获取正在进行部署的项目的当前分支。
答案 0 :(得分:3)
出于任何原因,你处于独立的头部。 (如果您不知道什么是分离的HEAD,请阅读this article。)
通常情况下,如果您执行git checkout SHA-1
之类的操作,则处于此状态; git checkout tag
(这些是几个之间的例子)。
似乎詹金斯检查了分离头中的代码。您可以使用$JENKINS_HOME/workspace/YOUR_PROJECT
转到git status
进行检查。
要解决您的问题,,您必须在Jenkins项目配置的 SCM管理部分下添加Additional Behaviours > Check out to a specific local branch
。
阅读以下链接可能会对您有所帮助:Jenkins Git plugin detached HEAD