持续集成 请教下 Gitlab 不同分支的 CI 触发策略?

麦子 · 2021年01月19日 · 最后由 麦子 回复于 2021年01月21日 · 3387 次阅读

想请教下目前大家公司如果用 Gitlab 作为代码托管的情况下,不同分支的 CI 触发策略是怎样的?

feature 分支

如果一个 feature 分支做 merge request 到 master 分支操作时,通过 webhook, feature 分支可以在做 merge request 的时候有 CI。那研发日常 push 代码到这个 feature 分支会有 CI 吗?能做到代码 merge 到 feature 分支前做 CI 检验吗?

master 分支

是不是都是 push 代码后触发 CI?

共收到 11 条回复 时间 点赞

你的意思是搞个 webhook feature 分支,每次这个分支有代码更新就触发构建发布,发布后做校验?然后你的检验是想怎么做?代码扫描还是跑自动化测试?

麦子 #14 · 2021年01月19日 Author
kisom 回复

feature 分支 merge request 到 master 分支前肯定有很多基于 feature 分支的提交,那这部分提交有没有 CI? 如果有能做到说代码 merge 前做 CI 检验吗?

如果一个 feature 分支做 merge request 到 master 分支操作时,通过 webhook, feature 分支可以在做 merge request 的时候有 CI。那研发日常 push 代码到这个 feature 分支会有 CI 吗?
--有,只要存在 feature 分支作为源分支的 mr,feature 每一次更新都会发送一个 mr 请求,都会触发 CI
能做到代码 merge 到 feature 分支前做 CI 检验吗?
--可以,我们用的 jenkins+gitlab 的方案,checkout 有一个 PreBuildMerge 参数,可以实现本地合并后再用合并代码做 CI,若有冲突直接失败,合并不会 push 到服务端,只做 CI。

AngryTester 回复

谢谢你的回答,我知道所有 MR 操作都可以做前置 CI。但我的问题是日常 push 到 feature 分支的代码怎么做前置 CI?我的理解 feature 分支研发 push 代码就直接进那个 feature 分支代码库了。

麦子 回复

你没有代码仓库权限吗?进去看一眼立刻就明白了……
可以配置多个 hook,MR 的配置 MR 的 CI 启动接口,Push 的(可以指定分支)URL 配置 Push 对应的 CI 启动接口

槽神 回复

Gitlab 的那几种 webhook 我知道,我的意思是有没有办法拦截 push 的提交,然后跑前置 CI,CI 过了在进代码库,想达到的效果有点类似 gerrit 的 patchset created 的效果。监听 push events 只能是说代码进去了再跑个 CI。

麦子 回复

预拦截 commint、push 只能通过项目下发本地的 hook 来实现,比较复杂,而且比较容易在本地被篡改。

槽神 回复

好的,所以 Gitlab 直接 push 到分支的代码只能说代码进去后触发 CI。如果 CI 有问题要么提交修复代码,要么 revert 之前代码,没办法说代码真正进代码库前触发 CI 拦截然后拒绝掉。

麦子 回复

CI 实施的前提就是版本控制吧,你可以把 local build 当做 CI 检查?或者在 feature 分支上拉个人分支开发,然后走 MR?

麦子 回复

换个思路,自己拿树莓派控制几个无人机、气球炸弹啥的,对于本地没有事先 CI 搞通直接 push 上去的,CI 一旦跑红了,开飞机去炸丫的,然后通过度量数据公示出来……

11楼 已删除
12楼 已删除
麦子 关闭了讨论 01月21日 08:17
麦子 重新开启了讨论 01月21日 08:18
麦子 #15 · 2021年01月21日 Author

@AngryTester @ 槽神 不同的 workflow 确实有不一样的策略,谢谢二位上面的回复。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册