【问题标题】:gitlab-ci: exclude merge requests from specific branchgitlab-ci:排除来自特定分支的合并请求
【发布时间】:2021-05-21 15:13:02
【问题描述】:

我希望 gitlab-ci 忽略来自特定分支的合并。

示例:我有 3 个分支。 大师、开发和测试。

如果我直接推送代码或将代码从任何分支合并到主/开发,管道就会被执行。

现在,当我专门从 test 分支合并时,我不希望管道开始运行。

我想排除从 test 分支到 development 或 ma​​ster 的合并。

【问题讨论】:

    标签: continuous-integration gitlab gitlab-ci gitlab-ci-runner


    【解决方案1】:

    这可以通过为要排除的作业指定if-rule 来完成。 例如:

    docker build:
      script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
      rules:
        - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != "test" || ($CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "test" and ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "master" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "development"))'
    

    CI_MERGE_REQUEST_SOURCE_BRANCH_NAME 和 CI_MERGE_REQUEST_TARGET_BRANCH_NAME 2 个变量仅在合并请求的情况下为 automatically defined。

    【讨论】:

      【解决方案2】:

      Gitlab CI 不必验证正在合并的“什么”,只需验证正在合并的“位置”。

      您可以使用使用git 命令的脚本来执行此操作(它允许检查父母双方的合并提交)。但是,我建议你不要这样做。原因是您可能会错过从非“测试”分支合并的更改的构建。

      例如

      1. dev 将功能分支合并到 master
      2. Gitlab CI 开始构建,因为它不是“测试”分支
      3. 在构建运行时,dev 将“test”合并到 master
      4. Gitlab CI 将取消之前的管道并开始新的管道
      5. 脚本将检测“test”发生的合并并退出

      此时,从 p2 开始的构建被 Gitlab 取消,在 p2 开始的构建被您的脚本取消。因此,缺少所需的构建。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-28
        • 2020-05-09
        • 2014-04-22
        • 1970-01-01
        • 2020-03-06
        • 2023-01-21
        • 2019-03-15
        • 2020-09-15
        相关资源
        最近更新 更多