我需要我正在部署插件的项目的当前分支名称,
所以插件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,而不是我试图部署的项目的当前分支。
我尝试了很多不同的场景,但是没有成功,我如何确保我正在使用的插件获取正在进行部署的项目的当前分支。
最佳答案
不管什么原因,你的头脑都是独立的。(如果您不知道什么是分离的头部,请阅读this article。)
通常,如果您执行类似于git checkout SHA-1
;git checkout tag
的操作,则会处于此状态(以下是几个之间的示例)。
詹金斯似乎是在独立的头脑里检查代码。您可以转到$JENKINS_HOME/workspace/YOUR_PROJECT
用git status
来检查。
要纠正您的问题,您必须在jenkins项目配置的scm management部分添加Additional Behaviours > Check out to a specific local branch
。
阅读以下链接可能有助于您:Jenkins Git plugin detached HEAD