【问题标题】:Adding git branch as a properties using Gradle on Jenkins在 Jenkins 上使用 Gradle 添加 git 分支作为属性
【发布时间】:2017-12-27 14:24:45
【问题描述】:

我想在项目的构建过程中将当前的 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 获取 BRANCH?

【问题讨论】:

    标签: git groovy


    【解决方案1】:

    如“How to find the current git branch in detached HEAD state”中所述,首先检查环境变量GIT_BRANCH是否没有您要查找的内容。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      相关资源
      最近更新 更多