Gitlab 工作流配置防止重复管道,启用分支、MR 和计划管道

问题描述 投票:0回答:1

这个想法是在 Gitlab 工作流配置中允许以下功能 -

  • 分支管道
  • 带有 MR 标签的 MR 管道
  • 安排管道

并且在 MR 过程中无需创建重复的管道(分支和 MR)即可运行。

工作流程是 -

  1. 打开一个功能分支并推送,这会触发两个初始阶段。
  2. 如果初始阶段通过,则创建 MR,并在初始阶段之上引入更多阶段。

以上所有内容都可以以各种组合方式发挥作用,但不能全部组合在一起。

以下工作流程不适用于分支管道,其他都很好。

workflow:
  rules:
    - if: $CI_MERGE_REQUEST_IID
    - if: $CI_COMMIT_TAG
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - if: $CI_COMMIT_REF_PROTECTED == "true"

当前版本

  • Gitlab v16.3.4-ee
  • 跑步者v16.3.0

任何关于上述内容的想法或提示将不胜感激:~)

gitlab continuous-integration gitlab-ci continuous-deployment merge-request
1个回答
0
投票

可以在此处看到有效的 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

不再出现重复的管道!

© www.soinside.com 2019 - 2024. All rights reserved.