如何检索Jenkins在使用反向分支选择策略时构建的git分支名称?

har*_*ish 6 git plugins branch inverse jenkins

我们有一个Jenkins工作,当有新的提交时,它会构建除master之外的每个分支.可以通过git plugin的"选择策略:反向"来配置此行为,以便它侦听除指定分支之外的每个分支.

这个功能非常好.但问题是GIT_BRANCH环境变量总是引用排除的分支(在我们的例子中是'origin/master').如何查询Jenkins构建的实际分支?

目前我正在使用一种解决方法,我从生成的changelog.xml中获取它.但有时候,当Jenkins在不同的分支之间切换时,changelog.xml为空,我找不到这个信息.从Jenkins检索/查询实际构建的分支的正确方法是什么?

Pio*_*ski 17

我成功使用了这种语法:

GIT_BRANCH=`git rev-parse HEAD | git branch -a --contains | grep remotes | sed s/.*remotes.origin.//`
Run Code Online (Sandbox Code Playgroud)

  • 请注意--contains还将包含比当前签出的代码更新的分支.这对我来说效果更好:`git show-ref | grep $(git rev-parse HEAD)| grep遥控器| grep -v HEAD | sed -e's /.*remotes.origin .//'`如果你想让它随意选择第一个分支名称,如果有多个分支指向这个提交,可能会把它传递给`head -n1`. (4认同)

Dan*_*tle 2

因为 git 从不直接检出分支,而只是直接检出提交,所以您必须执行以下操作:

要获取已签出提交的 sha:

git rev-parse HEAD
Run Code Online (Sandbox Code Playgroud)

要获取提交的所有分支,请执行以下操作:

git branch -a --contains SHA
Run Code Online (Sandbox Code Playgroud)

第二个命令的输出可能如下所示

master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
Run Code Online (Sandbox Code Playgroud)