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

如何让GitLab-CI的Deploy任务在任一Build任务完成后执行

解决方案

要实现手动运行任意一个Build任务后自动触发Deploy,核心是让Deploy任务只依赖你实际运行的那个Build任务,而非同时依赖两个。可以通过为每个Build任务绑定独立的Deploy任务,并用YAML锚点复用通用脚本的方式实现,避免代码重复。

修改后的.gitlab-ci.yml配置如下:

stages:
  - build
  - deploy

# 定义Deploy通用脚本的锚点,用于复用
.deploy_common: &deploy_common_script
  stage: deploy
  script:
    - echo "This is the deploy stage, ${VAR}."

# Pipeline 1
pipeline1:
  stage: build
  script:
    - echo "This is pipeline 1"
  variables:
    VAR: "P1"
  when: manual

# 绑定Pipeline1的Deploy任务
deploy_p1:
  <<: *deploy_common_script
  needs:
    - pipeline1
  variables:
    VAR: "P1"

# Pipeline 2
pipeline2:
  stage: build
  script:
    - echo "This is pipeline 2"
  variables:
    VAR: "P2"
  when: manual

# 绑定Pipeline2的Deploy任务
deploy_p2:
  <<: *deploy_common_script
  needs:
    - pipeline2
  variables:
    VAR: "P2"

工作原理

  • 每个Build任务(pipeline1/pipeline2)对应一个专属Deploy任务(deploy_p1/deploy_p2)。
  • 专属Deploy任务的needs仅依赖对应的Build任务,因此只要手动运行并完成其中一个Build任务,对应的Deploy就会自动启动。
  • 通过YAML锚点复用Deploy的通用脚本,避免重复编写相同代码。

使用方式

在GitLab流水线页面,手动触发pipeline1或pipeline2中的任意一个,待该Build任务执行完成后,对应的Deploy任务会自动启动,并输出对应的VAR变量值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:35:24