多模块maven项目 gitlab提交自动触发指定微服务jenkins流水线

背景

微服务时代,我们很多项目的后台代码是多模块的,一般分成基础模块和各个微服务模块,但是后台只有一个代码仓,不同服务的jenkins流水线却是多条,如果想要配置提交代码自动触发构建,则会出现一提交代码,所有流水线全部运行,不是我们想要的效果。

我们希望的是,提交某个微服务的代码,就只触发某个流水线。

思路

由于git 的钩子是固定的,并不能识别到我们提交了哪个微服务的代码,只要有提交就会触发钩子,所以我们需要额外的方法标注我们需要更新哪个微服务。恰巧,Gitlab提供了label的机制,在提交合入(MR)请求时,可以选择label;同时,jenkins中的gitlab插件也支持过滤label,因此,通过这个机制,可以实现提交某个微服务的代码,只触发指定的流水线。

使用这个方法,最好结合主干开发,MR代码审查机制一起,提交MR后审核通过,合入代码,然后自动触发构建,算是业界比较常见的代码提交方法。

具体操作

jenkins配置

创建流水线略,jenkins需要提前安装好gitlab插件,且只构建发布某个微服务对应的module。

假设我们的微服务名称为screen。
点击流水线配置,下拉找到构建触发器,勾选 Build when a change is pushed to GitLab. GitLab webhook URL: http://xxx,并且勾选子项 Accepted Merge Request Events,意为仅合入成功的请求才会触发构建。记录 web hook url,后续需要用到。

在这里插入图片描述

点击高级
在这里插入图片描述

在Allowed Branches 下面,勾选 Filter merge request by label

这里手动填好就可以,他下面有时候会出现 糟糕 的错误界面,无需理会。
在这里插入图片描述

记录 Secret token。

Gitlab配置

登入gitlab,进入项目。
点击仓库信息-标记 新增自己微服务的标记,比如test。
在这里插入图片描述

点击设置-webhook-新增,输入刚才的webhook地址 和 secret token:
在这里插入图片描述
触发来源勾选合并请求事件:
在这里插入图片描述
下拉点击add。

设置完成。

使用方法

假设我们的主分支是main,开发分支是xxx,编写代码后,提交到gitlab的xxx分支,然后点击合并请求-新增,源分支选择xxx,目标分支选择main,下拉,标记选择刚刚的标记,点击创建。

审核通过后,点击合入,合入成功即可触发jenkins流水线。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

合入后触发:

在这里插入图片描述

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值