[英]Jenkins and Gerrit integration with google repo scm
我寫這篇文章是因為我不清楚如何配置 jenkins 以從 gerrit 獲取構建我的項目的更改。
網上有很多關於如何連接所有這些代碼的教程/示例。 但我沒有找到任何可以解釋我想做的事情。 我認為這是可能的,但是……好吧。 我不知道。
我的設置:我有一個 repo 清單,其中包含最終應用程序的許多不同模塊。 應用程序以這種方式編寫,因為我可以更改一個模塊並將其替換為另一個具有類似代碼但可以完成不同工作的模塊。 例如,它們可以針對不同的客戶進行個性化。
我在 jenkins 中設置了一個工作來捕獲每個子模塊中的每個提交。
我將 Jenkins 連接到 Gerrit,我可以使用 gerrit 觸發器開始構建。
它有效,我可以構建我的主人和當前的主人。
我的問題是,當我發送補丁進行審查時,詹金斯構建了主版本,而不是我發送的補丁。 我想在將它集成到 master 之前測試最后一個補丁。
模塊不能獨立構建,因為它們都以某種方式連接,所以我無法單獨檢查每個部分。
有人能夠完成這樣的事情嗎?
當 Gerrit Trigger 啟動 Jenkins 作業時,您可以在執行構建之前執行以下操作來准備工作區:
使用 GERRIT_PROJECT 和 GERRIT_REFSPEC Gerrit Trigger 環境變量並執行以下命令以檢出已更改存儲庫的補丁集:
cd $GERRIT_PROJECT
git fetch https:// USER @ SERVER /a/$GERRIT_PROJECT $GERRIT_REFSPEC && git checkout FETCH_HEAD
或者
git fetch ssh:// USER @ SERVER :29418/$GERRIT_PROJECT $GERRIT_REFSPEC && git checkout FETCH_HEAD
關鍵是相應地設置“Repositories”>“Advanced..”>“Refspec”和“Branches to build”>“Branch Specifier”字段:作業>配置>源代碼管理> Git
如果要構建“master”分支,請設置:
Refspec = +refs/heads/master:refs/remotes/origin/master
Branch Specifier = refs/heads/master
如果要構建補丁集,請設置:
Refspec = $GERRIT_REFSPEC:$GERRIT_REFSPEC
Branch Specifieer = $GERRIT_REFSPEC
點擊“?” 以查看更多詳細信息。
請參閱gerrit-trigger-plugin手冊頁:
repo init -u git://gerrit.mycompany.net/mymanifest.git
repo sync
repo download $GERRIT_PROJECT $GERRIT_CHANGE_NUMBER/$GERRIT_PATCHSET_NUMBER
...做你正在尋找的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.