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

如何创建可选择仅执行Build阶段的GitLab CI/CD手动流水线合并请求

可行,两种实现方案如下

方案一:允许Deploy作业失败(推荐)

给deploy app作业添加allow_failure: true配置,这样即使不手动触发Deploy阶段,流水线也会被标记为成功,满足合并到master的条件。如果触发了Deploy阶段,只有当它执行成功时流水线才会保持成功状态,完全匹配“可选执行Deploy”的需求。

修改后的配置:

build app:
  stage: build
  variables:
    APP_NAME: app
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" && $CI_PIPELINE_SOURCE == "merge_request_event"'
      changes:
        - $APP_NAME/**/*
      when: manual
  extends: .build

deploy app:
  stage: deploy
  variables:
    APP_NAME: app
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" && $CI_PIPELINE_SOURCE == "merge_request_event"'
      changes:
        - $APP_NAME/**/*
      when: manual
      allow_failure: true  # 新增配置
  extends: .deploy

方案二:通过变量控制是否执行Deploy阶段

添加自定义变量SKIP_DEPLOY,当该变量值为true时,Deploy作业不会被创建,仅Build阶段成功即可合并;未设置或值不为true时,仍需手动触发Deploy并成功才能完成合并。

修改后的配置:

build app:
  stage: build
  variables:
    APP_NAME: app
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" && $CI_PIPELINE_SOURCE == "merge_request_event"'
      changes:
        - $APP_NAME/**/*
      when: manual
  extends: .build

deploy app:
  stage: deploy
  variables:
    APP_NAME: app
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" && $CI_PIPELINE_SOURCE == "merge_request_event" && $SKIP_DEPLOY != "true"'
      changes:
        - $APP_NAME/**/*
      when: manual
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" && $CI_PIPELINE_SOURCE == "merge_request_event" && $SKIP_DEPLOY == "true"'
      when: never
  extends: .deploy

使用时,在合并请求的“CI/CD变量”中添加SKIP_DEPLOY=true即可跳过Deploy阶段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:52:42