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号