Jenkins管道检索Git分支和哈希

问题描述 投票:1回答:1

我试图在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
git jenkins jenkins-pipeline
1个回答
0
投票

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

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

因此评论:

我不打算改变这个,因为JENKINS-26100允许结账步骤(和git步骤)从结账时返回名称和值的地图。

管道可以(并且经常)使用多个结账步骤,并且在地图中存储特定结账的返回值比读取环境变量并确定哪些结账提供哪些环境变量更清晰,更安全且更易理解。

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

© www.soinside.com 2019 - 2024. All rights reserved.