【问题标题】:In gitlab, how to set "pipelines must succeed" only for specific branches but not others for a merge request to merge?在 gitlab 中,如何设置“管道必须成功”只为特定分支而不是其他分支来合并合并请求?
【发布时间】:2021-11-01 15:49:42
【问题描述】:

在合并检查设置中,我启用了“管道必须成功”选项:

但是没有任何作业的分支通过说“等待管道状态”卡在合并中,如果没有成功的管道,您将无法合并。

我可以只为某些特定的分支(如主/生产)启用“管道必须成功”选项吗?

【问题讨论】:

    标签: gitlab gitlab-ci merge-request


    【解决方案1】:

    作为一种解决方法,您可以从当前没有任何工作的分支机构触发merge request pipeline。管道可以有一个始终通过的作业。合并请求管道只会在创建 MR 之后创建,而不是之前。

    这样一个简单的工作应该可以工作:

    print-info:
      stage: setup
      rules:
        - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
      script:
        - 'echo "Job start: $CI_JOB_STARTED_AT"'
        - 'echo "Branch: $CI_COMMIT_BRANCH"'
        - 'echo "Commit Author: $CI_COMMIT_AUTHOR"'
    

    注意:我不确定您当前的管道是什么样的,因此您可能需要更改 rules 部分以满足您的需求。

    【讨论】:

    • 感谢分享这个答案,我知道这行得通,但只是想知道在哪里可以选择摆脱这个虚拟管道,以便跑步者可以免费使用其他一些管道。它似乎是 gitlab 的限制。
    【解决方案2】:

    我认为这是不可能的。

    您应该确保始终有一个管道并且它是成功的。

    GitLab MR / when pipelines succeed / limitations

    【讨论】:

      猜你喜欢
      • 2019-04-06
      • 2021-05-21
      • 2020-03-06
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2020-12-20
      相关资源
      最近更新 更多