Jenkins自动触发构建maven多模块项目
参考:https://www.cnblogs.com/bigberg/p/13749233.html
一、要求
在一个Spring boot项目中,通过Jenkins来触发构建某单一模块时,其他模块和其余分支不受影响。
背景:我有个maven多模块项目,git地址是同一个。触发时需要根据分支+git地址+模块名来匹配是否触发。
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了。
四、如何按自己需求修改构建时配置的正则表达式
1、在git上点webhook的编辑,进去后下面有触发记录。点击右侧的view details。


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


浙公网安备 33010602011771号