You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在脚本通过前阻止GitLab合并请求?

实现方案

1. 拆分CI Job,独立运行检查脚本

把收尾整理检查脚本从构建步骤中抽出来,单独创建一个CI Job,让它只在合并请求(MR)触发的流水线中运行,不干扰构建、测试等核心步骤的执行。

示例.gitlab-ci.yml配置:

# 保留原有的构建、测试、打包步骤
build:
  stage: build
  script:
    - ./build-script.sh

test:
  stage: test
  script:
    - ./test-script.sh

package:
  stage: package
  script:
    - ./package-script.sh

# 新增独立的收尾检查Job
mr-cleanup-check:
  stage: pre-merge-check
  script:
    - ./your-cleanup-check-script.sh
  rules:
    # 仅在合并请求触发流水线时运行
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'

2. 设置合并请求的必要检查规则

进入项目的「设置」→「合并请求」→「合并审批规则」,添加一条新规则:

  • 规则类型选择「需要通过特定的CI Job」
  • 在下拉列表中选中刚才创建的mr-cleanup-check Job
  • 保存规则

这样配置后,构建、测试、打包步骤会正常执行,不受检查Job结果影响;只有当mr-cleanup-check Job成功通过时,合并请求才能被批准合并,完全满足“只阻止合并,不中断构建测试”的需求。

额外提示

  • 确保检查脚本返回值符合CI规范:检查通过返回0,未通过返回1,GitLab CI会自动识别Job状态
  • 如果需要针对特定分支的MR做检查,可以在rules里添加分支条件,例如:
    rules:
      - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'main'
    

内容的提问来源于stack exchange,提问作者ArmadilloChubbz65

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:46:06