簡體   English   中英

Jenkins Gerrit-Trigger插件:如何為每次推送而不是每次提交開始構建

[英]Jenkins Gerrit-Trigger plugin: How to start build for each push instead of each commit

我們正在使用CI的Jenkins,GerritTrigger設置,盡管所有提交都來自一次推送,但它將為每個提交開始構建。 由於所有更改都相互依賴,因此足以進行所有更改的單個構建,但是我在GerritTrigger插件中看不到該選項。

我相信許多公司都使用Jenkins和Gerrit的組合,但我很想知道他們如何處理這些案件。

例:

如果開發人員一次將4個提交提交到gerrit以下,它將相應地在gerrit中創建4個更改,例如1,2,3,4,並為所有提交在jenkins中啟動4個構建

git log --oneline

e3dfdwd CommitD
5fgfdgh CommitC
df34dsf CommitB
a23sdr3 CommitA 

總體而言,這里的4次提交將通過jenkins中的所有測試,但個別情況下它們將失敗。 現在,jenkins構建將針對A,B,C失敗,而對於D將成功,因為它將簽出A,B,C,因為它們是其依賴項。

在這種情況下,盡管Commit-D成功,但是由於在Jenkins中未傳遞其依賴項,因此無法合並。

從開發的角度來看,期望每次推送而不是每次提交都進行詹金斯驗證似乎是合理的。 但是GerritTrigger只能為每個提交運行。

題:

有沒有辦法通知詹金斯只為commit-D開始構建,因為它將具有所有依賴項C,B,A? 還是可以為開發中的每個git push(而不是commit)啟動構建?

對不起,如果我有任何信息

我找到了一種僅針對commit-D開始構建的方法。

我介紹了一個gerrittrigger作業,該作業在每次提交后立即運行,該作業不會進行任何克隆/構建/驗證。

它只會做一些驗證,例如,檢查給定的更改是否需要更改,是否存在依賴關系以及在同一分支上的依賴關系等。

該工作將觸發另一個主要工作,該工作僅對通過所有驗證的更改進行真正的克隆,簽出更改,構建,驗證等。

因此,這將始終啟動作業以進行最高提交,並根據作業結果批准/拒絕所有相關更改。

盡管有一些限制,但我們發現此方法適合我們的工作流程

不幸的是,大多數公司不使用git和gerrit :)大多數公司甚至不使用git。 而且大多數這樣做的人都不使用Gerrit。 我已經為數十家公司提供咨詢服務:兩家公司使用git,而且它們甚至都沒有聽說過Gerrit。

我認為不可能讓Gerrit認為推送就是提交。 由於推送中的每個提交都可以分別進行檢查和拒絕,因此必須分別考慮和構建每個提交。 如果您不希望它那樣工作,那么Gerrit可能不適合您。

相反,您應該在將相關的提交壓入gerrit之前在本地壓縮它們。 這樣可以達到預期的效果。

暫無
暫無

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

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