IabSDocker15天前更新关注私信 背景 最近开发反馈在合并代码触发流水线时经常出现双pipeline,并且这两个pipeline中有一个是正常走流程,但有一个却只有一个push image的job,以下是正常流水线的简易流程 但是在合并代码时却出现了以下问题 在上面的两个流水线中有一个只出现了一个job,并且这两个流水线所触发的git hash值是一致的。 百思不得其解的查资料时发现官方时这样说的 GitLab 会在 合并 MR 成功后 做两件事(视配置不同而定): 触发 MR 合并前的 MR Pipeline MR 合并后会 push commit 到目标分支,于是再触发一个 push pipeline 所以我们在一个 MR 合并过程中会看到两个 pipeline 类型 是否预期 说明 MR pipeline (merge_request_event) ✅ 是的 真正的、提前跑的 pipeline 合并后 Push 产生的 pipeline (push) ✅ 也是的 GitLab 合并时自动 push 到目标分支导致 但我们要的是合并后Push产生的pipeline,更具官方的说法我们可以使用自带的CI_PIPELINE_SOURCE 变量来触发是否执行pipeline 上图首先build和push阶段先判断是否为合并后 Push 产生的 pipeline,然后在build阶段只要提交到对应分支即可触发jod,在push阶段只有提交到非"develop_*"分支才会自动触发jod否侧需手动触发 (因为开发频繁提交代码,有些功能还没有完全开发完成,频繁在"develop_*"分支推送到镜像仓库会产生很多垃圾镜像并占用镜像仓库存储) 配置完成后再来看流水线的状态就不会在出现合并分支后出现双pipeline © 版权声明文章版权归作者所有,未经允许请勿转载。THE ENDGitlab# Gitlab 喜欢就支持一下吧点赞62赞赏 分享QQ空间微博QQ好友海报分享复制链接收藏