这个想法是在 Gitlab 工作流配置中允许以下功能 -
并且在 MR 过程中无需创建重复的管道(分支和 MR)即可运行。
工作流程是 -
以上所有内容都可以以各种组合方式发挥作用,但不能全部组合在一起。
以下工作流程不适用于分支管道,其他都很好。
workflow:
rules:
- if: $CI_MERGE_REQUEST_IID
- if: $CI_COMMIT_TAG
- if: $CI_PIPELINE_SOURCE == "schedule"
- if: $CI_COMMIT_REF_PROTECTED == "true"
当前版本
任何关于上述内容的想法或提示将不胜感激:~)
可以在此处看到有效的 Gitlab 工作流程配置 -
workflow: # Intent - Run for branch, merge request and schedule pipelines and prevent merge request duplicate pipelines
rules:
- if: $CI_PIPELINE_SOURCE == "schedule" # Run on schedule pipeline
- if: $CI_PIPELINE_SOURCE == "merge_request_event" # Run on merge request pipeline
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS # Do not run on both branch and merge request pipeline
when: never
- if: $CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000" # Do not run on merge request creation
when: never
- if: $CI_COMMIT_BRANCH # Run on branch pipeline
每个工作都扩展了这样的规则
dev:plan:
stage: plan
extends: [ .plan_rules ]
对于 plan_rules 仅需要合并请求,而不需要分支管道
所以我尝试了
.plan_rules: # Intent - allow when merge request
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
但是上面在合并请求管道期间触发了重复管道。
将 plan_rules 更新为
.plan_rules: # Intent - allow plans when merge request
rules:
- if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_ID != null
不再出现重复的管道!