[英]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.