对以前的管道禁用给定的手动作业

时间:2020-07-16 16:18:58

标签: continuous-integration gitlab gitlab-ci gitlab-ci-runner

我在GitLab CI管道中有这个概念证明(仅显示相关部分):

deploy:development:
  stage: deploy
  rules:
    - if: $CI_COMMIT_BRANCH == "master"
  script: do_deploy
  variables:
    ANSIBLE_INVENTORY: development

deploy:test:
  stage: deploy
  environment:
    name: test
    url: https://env.url.tld
  rules:
    - if: $CI_COMMIT_BRANCH == "master"
      when: manual
  script: do_deploy
  variables:
    ANSIBLE_INVENTORY: test

创建新作业时,我想禁用/弃用以前的deploy:test作业。基本上,deploy:test作业仅应为当前/最新管道启用,从而防止旧版本接管最近的版本。

我并不是说它应该立即发生;如果它正在运行,可以让它完成,但如果它失败而创建了一个新的,则也应该禁用旧的(失败的)。与当前状态相同,如果成功运行,则应将其禁用-这是一种最佳状态。

是否有可以让我做到这一点的配置设置?我已经在Settings > CI/CD > General pipelines中检查了自动取消冗余的,待处理的管道跳过过时的部署作业,但是在先前的管道上仍未禁用该作业。 / p>

1 个答案:

答案 0 :(得分:0)

您是否尝试添加“可中断”标签?

https://yeni.elbielectric.com/urunler/zena/silverline/fildisi/anahtar/

看来您必须将 interruptible: true 添加到您的 yaml 中。

例如:

deploy:development:
  stage: deploy
  rules:
    - if: $CI_COMMIT_BRANCH == "master"
  script: do_deploy
  interruptible: true
  variables:
    ANSIBLE_INVENTORY: development

参考:enter image description here