Jenkins自动触发构建maven多模块项目

参考:https://www.cnblogs.com/bigberg/p/13749233.html

一、要求

在一个Spring boot项目中,通过Jenkins来触发构建某单一模块时,其他模块和其余分支不受影响。

背景:我有个maven多模块项目,git地址是同一个。触发时需要根据分支+git地址+模块名来匹配是否触发。

二、Jenkins配置

1. 安装插件

插件:Generic Webhook Trigger Plugin

 如站点不可在线安装,可离线安装,参考CICD分类里的离线安装方法。

2. 配置用户

设置用户token,不然会报403错误

jenkins---> 用户列表----> 具体用户------> 设置

(记住token,保存下来)

 

三、构建项目

1.选择插件

 

2. 在Post content parameters中新增参数

 

3. 第二个参数

4. 第三个参数

 5.设token

多个模块,需要在jenkins中设多个job,各job可用模块名当token,然后在git的webhook上根据需要,按模块名配置多个webhook。

 

6. Optional filter

复制代码

^refs/heads/5.0-timescaleDB\s+git@xxxx.git\s+\[.*"xxxx/.*\] ​ $ref $git_ssh_url $commits ​ # 这边匹配的dev分支 # (ssh://git@xxx.git) : gitlab上git_ssh_url地址 # *xxx : 匹配的模块名称
复制代码

 我一开始是按文章开头的参考网站中的正则表达式配置的,但是发现不触发,看webhook返回的response,才知道正则未匹配上,后按实际改的正则表达式,才正确触发。

四、配置GitLab

1. 配置wenhook

 找到项目,然后在settings的webhooks下,点击add new webhook,新增一个。

 

 

2.添加jenkins信息

 

 

 

http://user:user_token@jenkin_server/generic-webhook-trigger/invoke?token=xxx
​
# user: jenkins用户设置添加token的用户
# user_token: 第二步设置的用户 token
# jenkins_server: jinkins的地址
上文设置构建时,若未设token,此外可不加token,因为我有多个maven,我想从webhook上区分开,方便查看webhook记录,所以配上token了。

 

此时点击test测试,如果有相关分支的推送,就会自动构建发布

四、如何按自己需求修改构建时配置的正则表达式

1、在git上点webhook的编辑,进去后下面有触发记录。点击右侧的view details。

 

打开详情页,将response里的结果复制出来,复制到一个在线json格式化工具网站上(https://www.json.cn/),

 说明如下:

regexpFilterExpression

triggered是代表是否在jenkins上触发。

regexpFilterExpression是在jenkins中构建时设置的正则表达式。

regexpFilterText是你提交代码的文件路径,如果regexpFilterText匹配正则regexpFilterExpression,则触发jenkins,否则不触发。

 

 

 

posted @ 2025-06-23 17:17  又逢落花时节  阅读(216)  评论(0)    收藏  举报