簡體   English   中英

Jenkins管道檢索Git分支和哈希

[英]Jenkins pipeline retrieving Git branch and hash

我正在嘗試在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

似乎與問題JENKINS-45962有關 :“ jenkins管道中未填充GIT_BRANCH變量”

它指的是JENKINS-26100 ,它允許SCM步驟返回修訂狀態(而不是分支)。

因此,評論:

我不打算更改此設置,因為JENKINS-26100允許檢出步驟(和git步驟)從檢出返回名稱和值的映射。

管道可以(並且經常這樣做)使用多個檢出步驟,與讀取環境變量並確定哪個檢出提供哪些環境變量相比,將特定檢出的返回值存儲在映射中更加干凈,安全和易於理解。

由於存在多個簽出步驟,因此不再填充一個環境變量(例如GIT_BRANCH )。
由於HEAD始終是分離的,因此... rev-parse將始終返回提交,而不是分支名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM