使用Jenkins上的Gradle将git分支添加为属性

使用Jenkins上的Gradle将git分支添加为属性,git,groovy,Git,Groovy,我想在项目的构建过程中将当前的git分支添加到属性中 我的项目可以在本地构建,也可以使用Jenkins。当项目在本地构建时,这是非常简单的,我定义了以下任务以成功获得分支: task getBranch { def cmd = "git rev-parse --abbrev-ref HEAD" def proc = cmd.execute() def branch = proc.text.trim() ext.branch = branch } 但是,Jenki

我想在项目的构建过程中将当前的git分支添加到属性中

我的项目可以在本地构建,也可以使用Jenkins。当项目在本地构建时,这是非常简单的,我定义了以下任务以成功获得分支:

task getBranch {
    def cmd = "git rev-parse --abbrev-ref HEAD"
    def proc = cmd.execute()
    def branch = proc.text.trim()
    ext.branch = branch
}
但是,Jenkins构建过程的一部分涉及将分支上的最后一次提交签出到它自己的分支中,使项目处于分离的头状态:

commit_hash=${git rev-parse refs/remotes/origin/BRANCH^{commit}}
git checkout -f ${commit_hash}
此时,我可以运行
git reflog show-n1
来获得:

HEAD@{0}: checkout: moving from BRANCH to $commit_hash
我将不得不编写一些
groovy
代码,以从该格式的字符串中获取BRANCH的值。但是,我想知道是否有更直接的方法从git获取分支?

如“”中所述,首先检查环境变量git\u BRANCH是否没有您想要的

否则,您需要解析reflog或远程分支(因为Jenkins Git repo克隆的工作区没有本地分支)

如“”中所述,首先检查环境变量
GIT_BRANCH
是否没有您要查找的内容

否则,您需要解析reflog或远程分支(因为Jenkins Git repo克隆的工作区没有本地分支)

git for-each-ref --format="%(objectname) %(refname:short)" refs/remotes/origin | awk "/^$(git rev-parse HEAD)/ {print $2}"