赞
踩
微服务时代,我们很多项目的后台代码是多模块的,一般分成基础模块和各个微服务模块,但是后台只有一个代码仓,不同服务的jenkins流水线却是多条,如果想要配置提交代码自动触发构建,则会出现一提交代码,所有流水线全部运行,不是我们想要的效果。
我们希望的是,提交某个微服务的代码,就只触发某个流水线。
由于git 的钩子是固定的,并不能识别到我们提交了哪个微服务的代码,只要有提交就会触发钩子,所以我们需要额外的方法标注我们需要更新哪个微服务。恰巧,Gitlab提供了label
的机制,在提交合入(MR)请求时,可以选择label;同时,jenkins中的gitlab插件也支持过滤label,因此,通过这个机制,可以实现提交某个微服务的代码,只触发指定的流水线。
使用这个方法,最好结合主干开发,MR代码审查机制一起,提交MR后审核通过,合入代码,然后自动触发构建,算是业界比较常见的代码提交方法。
创建流水线略,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,进入项目。
点击仓库信息-标记 新增自己微服务的标记,比如test。
点击设置-webhook-新增,输入刚才的webhook地址 和 secret token:
触发来源勾选合并请求事件:
下拉点击add。
设置完成。
假设我们的主分支是main,开发分支是xxx,编写代码后,提交到gitlab的xxx分支,然后点击合并请求-新增,源分支选择xxx,目标分支选择main,下拉,标记选择刚刚的标记,点击创建。
审核通过后,点击合入,合入成功即可触发jenkins流水线。
合入后触发:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。