当前位置:   article > 正文

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

filter merge request by label

背景

微服务时代,我们很多项目的后台代码是多模块的,一般分成基础模块和各个微服务模块,但是后台只有一个代码仓,不同服务的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流水线。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

合入后触发:

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/701010
推荐阅读
相关标签
  

闽ICP备14008679号