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

GitLab CI中能否设置两个仅允许执行其一的手动任务?

GitLab CI实现二选一手动任务方案

可以通过GitLab CI的rules结合job状态判断来实现同一阶段两个手动任务二选一,执行其中一个后锁定另一个,且不会取消整个流水线。

核心思路是利用GitLab CI对其他job状态的引用能力,让每个手动任务仅在另一个任务未成功执行时才允许触发;当其中一个任务成功完成后,另一个任务会自动变为不可触发的跳过状态。

示例配置如下:

stages:
  - build
  - test
  - deploy

# 前置的build、test任务根据实际业务需求定义

promote:
  stage: deploy
  script:
    - echo "执行promote部署逻辑"
  when: manual
  rules:
    # 仅当publish任务未成功时,才显示该手动任务
    - if: 'job:publish.status != "success"'
    - when: manual

publish:
  stage: deploy
  script:
    - echo "执行publish部署逻辑"
  when: manual
  rules:
    # 仅当promote任务未成功时,才显示该手动任务
    - if: 'job:promote.status != "success"'
    - when: manual

注意事项:

  • 该方案要求GitLab版本在13.12及以上,因为从这个版本开始支持在rules中引用其他job的状态(job:<job_name>.status语法)。
  • 初始状态下,两个手动任务都会显示在流水线界面中,用户可选择触发任意一个;当其中一个任务执行成功后,另一个任务的规则条件不再满足,会被标记为skipped,无法再触发。
  • 如果需要限制两个任务不能并行执行,可额外添加resource_group配置,将两个任务放入同一资源组,同一时间仅允许执行一个任务,但仍需配合上述rules判断来实现“执行一个后锁定另一个”的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:13:20