Jenkins实现Gerrit代码CI流程

本文解决的问题:

  1. Gerrit如何联动Jenkins实现代码自动评审。

前面的文章已经介绍过Jenkins的使用方法。现在我重点介绍Jenkins如何联动Gerrit实现自动化代码评审流程。

一、Jenkins管理Gerrit插件

Dashboard >> 系统管理>> Gerrit Trigger

配置Gerrit服务器IP:

配置Jenkins任务完成后给Gerrit上报的值:

二、Jenkins构建触发器

2.1 触发器:Gerrit event

环境要求:Jenkins安装gerrit-trigger插件。

参考:

  1. Gerrit插件: https://plugins.jenkins.io/gerrit-trigger/
  2. 构建的参数就是一个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
posted @ 2025-04-05 17:50  liqinglucky  阅读(385)  评论(0)    收藏  举报