如何用Workflow规则让GitLab流水线仅在Staging合并到Master或Webhook触发时运行
GitLab流水线Workflow规则配置方案
以下是满足需求的最终Workflow配置,仅允许staging分支合并到master或Webhook触发两种场景运行master分支的流水线,同时保留配置文件变更时不触发的规则:
workflow: rules: # 修改配置文件或Dockerfile时跳过流水线 - changes: - .gitlab-ci.yml - Dockerfile when: never # 排除打开的MR对应的分支推送(避免MR分支推送触发冗余流水线) - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never # 允许Webhook触发的流水线(匹配trigger源) - if: $CI_PIPELINE_SOURCE == "trigger" # 仅允许staging分支合并到master时触发流水线 - if: "$CI_COMMIT_BRANCH == 'master' && $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_MESSAGE =~ /Merge branch 'staging' into 'master'/" when: always # 兜底规则:所有未匹配的情况一律不触发流水线 - when: never
规则说明
- 配置文件变更过滤:直接匹配
.gitlab-ci.yml和Dockerfile的变更,避免测试配置时触发流水线。 - MR分支推送过滤:排除已打开MR的分支推送触发的流水线,仅保留必要的流水线场景。
- Webhook触发允许:精准匹配Webhook触发的
trigger源,满足外部触发需求。 - staging合并到master匹配:通过分支、事件类型、提交消息三重判断,确保只有staging合并到master的操作能触发master分支流水线,直接推送master、UI编辑、其他分支合并等场景都会被过滤。
- 兜底规则:确保所有未明确允许的场景都不会触发流水线,避免意外执行。
内容的提问来源于stack exchange,提问作者suren
相关产品推荐
相关产品推荐

