Jenkins管道检索Git分支和哈希

时间:2018-09-02 01:45:37

标签: git jenkins jenkins-pipeline

我正在尝试在Jenkins管道中检索git分支和哈希,但是由于某些奇怪的原因,特别是分支的stdout总是返回为“ HEAD”。如果我在bash中运行确切的命令,它将正常工作。我得到了“开发”和哈希。

管道

stage('Build') {
    script {
        GIT_BRANCH = sh(returnStdout: true, script: "git rev-parse --abbrev-ref HEAD").trim()
        GIT_HASH = sh(returnStdout: true, script: "git rev-parse --short HEAD").trim()
    }
    echo "branch is: ${GIT_BRANCH}"
    echo "hash is: ${GIT_HASH}"
}

输出

Running shell script
+ git rev-parse --abbrev-ref HEAD
Running shell script
+ git rev-parse --short HEAD
branch is: HEAD
hash is: dd96820

1 个答案:

答案 0 :(得分:0)

这似乎与issue JENKINS-45962有关:“ GIT_BRANCH变量未在jenkins管道中填充”

它引用JENKINS-26100,它允许SCM步骤返回修订状态(而不是分支)。

发表评论:

  

我不打算更改此设置,因为JENKINS-26100允许结帐步骤(和git步骤)从结帐中返回名称和值的映射。

     

管道可以(而且经常)使用多个结帐步骤,与读取环境变量并确定哪个结帐提供了哪个结帐相比,将特定结帐的返回值存储在地图中更加干净,安全且易于理解环境变量。

由于存在多个多个检出步骤,因此不再填充一个环境变量(例如GIT_BRANCH)。
由于HEAD始终是分离的,因此... rev-parse将始终返回提交,而不是分支名称。