[英]Jenkins: pass git commit hash to a downstream job
我有 2 個工作(A 和 B)。 作業 A 指向 URL-A 處的 git 存儲庫。 作業 B 指向不同的 git 存儲庫,位於 URL-B。
一旦作業 A 完成並穩定,它應該觸發作業 B 並傳遞作業 A 構建中使用的 git commit 哈希。
實現這一目標的最簡單方法是什么?
(作業 B 對應於從 URL-B 檢出的腳本,它有 2 個參數:一個 git commit 哈希和一個 JAR 工件,它們將包裝在 Docker 映像中並推送到 Docker 集線器)
當您使用 GIT 插件從作業 A 簽出時,您已經擁有插件導出的 $GIT_COMMIT 參數:
環境變量
git 插件設置了幾個可以在腳本中使用的環境變量:
GIT_COMMIT - 當前的 SHA
GIT_BRANCH - 遠程存儲庫的名稱(默認為 origin),后跟當前使用的分支的名稱,例如“origin/master”或“origin/foo”
等。
只需確保將此參數顯式傳遞給作業 B(預定義參數、來自文件的參數等)。
在作業 B 中,選中This project is parameterized
。 定義一個String Parameter
,例如將 Name 設置為COMMIT
。 在作業 A 中,設置Post-build Actions
with Trigger parameterized build on other projects
。 Project to build
是作業 B 的名稱, Trigger when build is
為Stable
Trigger when build is
。 Add Parameters
帶有Predefined parameters
,您只需在其中放置COMMIT=$commit
。 $commit
通常是作業 A 中定義的參數。您可以在作業 B 中添加其他預定義參數,並將值傳遞給作業 A 中的全部或部分參數。
簡單的方法是使用Jenkins 參數化觸發器插件,通過它您可以僅在之前的構建穩定時觸發構建。
您也可以傳遞參數。 就像在您的情況下,將 git commit hash 設置為參數並調用作業 B。
作業 B 將接收該參數並進一步處理的位置
似乎現在(參數化觸發器 2.37,Jenkins 2.204),“觸發器參數化構建”可以選擇“傳遞已構建的 Git 提交”。 即使在下游作業中沒有任何特殊配置也能工作。
使用(參數化觸發器插件https://plugins.jenkins.io/parameterized-trigger/ )設置以下內容:
在上游 JobA:構建后操作 -> 在其他項目上觸發參數化構建 -> 要構建的項目:JobB。 添加參數 -> 構建的傳遞 Git 提交。
在下游 JobB 上:只需檢查源代碼管理從 None 到 Git 並設置與 JobA 中相同的 repo。 對於 Branch 什么都不做,你甚至可以刪除分支,但是 Jenkins 會自動添加 master。 不用擔心 Master,這個 JobB 將使用 JobA 的 GitCommit SHA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.