Gitlab双管道触发问题
Posted
技术标签:
【中文标题】Gitlab双管道触发问题【英文标题】:Gitlab Double pipeline triggering issue 【发布时间】:2022-01-09 05:05:01 【问题描述】:推送提交时会触发两个管道作业。但是手动启动管道时没有发生同样的事情。
我应该在哪里检查? 左箭头或右箭头表示分支活动是什么意思?
我要说的是有一个合并请求待处理,会不会导致这个问题?
【问题讨论】:
【参考方案1】:您的解决方案的问题是,它仅在您有合并请求事件时避免管道执行,但仍然会有重复的管道,例如合并请求管道(detached
的)和分支管道(其他),我认为在推送标签时,您的设置也会创建一个单独的管道。
按照文档,您可以在使用以下工作流规则集(我添加了|| $CI_COMMIT_TAG
)时避免重复的管道和在分支管道和 MR 管道之间切换,因为在推送标签时也应该创建管道(但是也许只有少数工作会被添加到这个管道中)
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
when: never
- if: '$CI_COMMIT_BRANCH' || '$CI_COMMIT_TAG'
这个管道是一个合并请求管道,你可以看到这是因为它是 detached
并且因为合并请求符号和提交 id 左侧的 MR 编号
以下屏幕截图显示了一个“普通”分支管道,由提交 ID 左侧的分支名称和 GitLab 分支符号表示
【讨论】:
【参考方案2】:待处理的合并请求会导致触发第二个管道作业。将以下内容添加到gitlab-ci.yml file
后解决
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- when: always
【讨论】:
第一条规则不会避免管道中的重复,它只会避免在打开合并请求时生成管道,请参阅下面的答案以获取更多信息和更新的规则集,但这是一个相当棘手的话题,我已经花了很多时间修复重复的管道以上是关于Gitlab双管道触发问题的主要内容,如果未能解决你的问题,请参考以下文章
为合并请求触发的管道运行应用 GitLab CI/CD 管道更改