Jenkins實現Gerrit代碼CI流程
本文解決的問題:
- Gerrit如何聯動Jenkins實現代碼自動評審。
前面的文章已經介紹過Jenkins的使用方法。現在我重點介紹Jenkins如何聯動Gerrit實現自動化代碼評審流程。
一、Jenkins管理Gerrit插件
Dashboard >> 系統管理>> Gerrit Trigger
配置Gerrit服務器IP:

配置Jenkins任務完成后給Gerrit上報的值:

二、Jenkins構建觸發器
2.1 觸發器:Gerrit event
環境要求:Jenkins安裝gerrit-trigger插件。
參考:
- Gerrit插件: https://plugins.jenkins.io/gerrit-trigger/
- 構建的參數就是一個json字符串中解析出來的: 03-優化Gitlab提交流水線-分支自動匹配 精準空降到 05:03
Jenkins配置界面如下:

2.1.1 配置trigger on
| Gerrit觸發參數 | 說明 |
|---|---|
| Patchset Created | 代碼提交到gerrit就觸發jenkins任務 |
| Change Merged | 代碼merge進分支后觸發jenkins任務 |
查詢Gerrit觸發過的代碼提交事件:
Dashboard >> Query and Trigger Gerrit Patches
查詢條件如:
status:merged
2.1.2 配置Gerrit Project
支持的配置類型如下:
| Type | Pattern |
|---|---|
| Plain | 固定文本。如倉庫名,分支名 |
| Path | |
| ReqExp | 正則表達式。 |
創建Gerrit Project填倉庫地址和分支名。
2.2 觸發器:靜默期
勾選靜默期。任務開始后會延遲一段時間后再開始執行。
2.3 觸發器:觸發遠程構建
勾選觸發遠程構建。配置一個身份驗證令牌字符串。然后只要通過訪問url就可以觸發Jenkins任務。例如訪問url:
http://myjenkins:8080/job/build_pipline/build?token=mybuild
三、流水線:Pipline Script
web界面編寫流水線腳本:流水線 >> 選擇Pipline Script。
參考:Groovy語法
四、遇到的問題
4.1 腳本沒有approved報錯
問題:CI沒有跑起來
org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException: script not yet approved for use
at org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.using(ScriptApproval.java:489)
at org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition.create(CpsFlowDefinition.java:120)
at org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition.create(CpsFlowDefinition.java:67)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:311)
at hudson.model.ResourceController.execute(ResourceController.java:107)
at hudson.model.Executor.run(Executor.java:449)
Finished: FAILURE
解決:重新approve了pipline CI腳本。要approve 第二個admin那個腳本。
正常狀態為:
The script is already approved

浙公網安備 33010602011771號