Gerrit合并特定文件触发Jenkins流水线配置求助
问题描述
需求:创建Jenkins流水线任务,当Gerrit仓库master分支的filename.json文件内容变更并合并时触发执行CI步骤。
目录结构
. ├── Readme ├── tools- └── src └── main ├── com │ └── xx ├── A │ ├── B │ ├── C │ ├── xx.conf │ ├── yy.conf │ ├── filename.json │ ├── cc │ └── dd.conf ├── dddd │ └── dd.yml └── gee
环境
- Gerrit 3.7
- Jenkins 2.38
尝试配置
已使用Jenkins Gerrit Trigger插件,但配置后任务未触发,当前配置如下:
Dynamic Trigger Configuration: http://gerrit-{domain}.com Gerrit Project: Plain: {repo=name} Plain: refs/head/master Path: ops/vuln-feed/{filename}.json gerrit url:http://gerrit-{domain}.com repo name: {repo-name} filename: ops/vuln-feed/{filename}.json
问题
当src/main/A/filename.json文件合并到master分支时,Jenkins任务未触发,需获取正确的Gerrit Trigger插件配置步骤。
正确配置步骤
1. 全局Gerrit服务器配置
先确保Jenkins已正确连接到Gerrit服务器:
- 进入Jenkins 系统管理 > Gerrit Trigger > Gerrit服务器,确认已添加目标Gerrit地址
http://gerrit-{domain}.com,点击Test Connection验证连通性。 - 勾选Allow triggering jobs based on Gerrit events,开启事件触发功能。
2. 流水线任务的Gerrit Trigger配置
打开目标流水线任务的配置页面,找到Gerrit Trigger模块,按以下步骤调整:
2.1 修正Gerrit Project规则
- 仓库名:在
Plain: Repository处填写准确的Gerrit仓库名{repo-name},必须和Gerrit上的仓库名称完全一致。 - 分支规则:
Plain: Branches改为refs/heads/master(注意是heads不是head,拼写错误会导致分支匹配失败)。 - 文件路径:
Path改为实际路径src/main/A/filename.json(你当前配置的路径和实际目录结构不符,这是触发失败的核心原因),匹配规则选择PLAIN即可(如果路径有通配需求再用REG_EXP)。
2.2 选择正确的触发事件
在Trigger on区域,勾选Change Merged——这个事件会在代码合并到master分支时触发任务。如果需要在提交审查阶段也触发CI,可额外勾选Patchset Created,但按需求重点选前者即可。
2.3 合并检查与动态触发器配置
- 如果需要强制合并前通过Jenkins检查,进入Gerrit Project > Advanced > Merge Checks,勾选This job contributes to the merge check,这样Gerrit会要求该Jenkins任务成功后才能合并变更。
- 动态触发器部分,确保Dynamic Trigger Configuration指向已配置好的Gerrit服务器;同时需让Gerrit管理员在目标仓库的webhook设置中添加Jenkins的事件接收地址:
http://<你的Jenkins地址>/gerrit-trigger/event,这是Gerrit向Jenkins推送事件的关键。
3. 验证配置
提交一个修改src/main/A/filename.json的变更到Gerrit,合并到master分支,查看Jenkins任务是否自动触发。如果仍未触发,去Jenkins系统管理 > 系统日志排查,常见问题包括路径匹配失败、Gerrit webhook未配置、权限不足等。
内容的提问来源于stack exchange,提问作者nagarjuna v
相关产品推荐
相关产品推荐

