首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用反向分支选择策略时,如何检索Jenkins构建的git分支名称?

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

Stack Overflow用户
提问于 2013-02-21 00:59:02
回答 4查看 8.9K关注 0票数 6

我们有一个Jenkins作业,当有新的提交时,它构建除了master之外的每个分支。这种行为可以通过git插件的'choosing strategy:inverse‘来配置,这样它就可以监听除指定分支之外的所有分支。

这个功能运行得非常好。但问题是GIT_BRANCH环境变量总是引用被排除的分支(在我们的例子中是‘源/主’)。如何查询Jenkins实际搭建的分支?

目前,我正在使用一个解决方法,即从生成的changelog.xml中对其进行grep。但是,当Jenkins在不同的分支之间切换时,有时会发生changelog.xml为空的情况,而我找不到此信息。从Jenkins检索/查询实际构建的分支的正确方式是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-04 10:03:05

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

要获取签出提交的sha,请执行以下操作:

代码语言:javascript
复制
git rev-parse HEAD

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

代码语言:javascript
复制
git branch -a --contains SHA

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

代码语言:javascript
复制
master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
票数 2
EN

Stack Overflow用户

发布于 2014-01-08 20:38:32

我成功地使用了以下语法:

代码语言:javascript
复制
GIT_BRANCH=`git rev-parse HEAD | git branch -a --contains | grep remotes | sed s/.*remotes.origin.//`
票数 18
EN

Stack Overflow用户

发布于 2013-02-21 01:06:23

看起来像是Jenkins的窃听器?您可以使用以下命令在构建脚本中获取已签出分支的名称:

代码语言:javascript
复制
git symbolic-ref -q --short HEAD

实际上Jenkins在分离的头中有工作副本,这就是为什么git branch返回“无分支”的原因。有关分离的头部和分支之间的对账信息,请参阅this quite detailed answer

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14985563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档