如何让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
相关产品推荐
相关产品推荐

