首页 > 解决方案 > 当上一阶段在 GItlab CI 上失败时阻止部署

问题描述

我的项目中定义了以下阶段gitlab-config.yaml

stages:
  - Prepare
  - Report
  - Static Analysis
  - Unit Test
  - Integration Test Prep
  - Integration Tests
  - Deploy

之前的阶段DeployIntegration Tests,并且这个阶段内的所有作业都不允许失败(这是根据文档的默认设置)。

我有许多部署到不同环境的部署作业。我的生产部署作业使用以下逻辑:

  rules:
    - if: $DEPLOY_ENV == "production" && $CI_COMMIT_BRANCH == "production"
      when: always

我对当前设置的问题是,即使不允许集成测试作业失败,即使它们失败了,仍然会到达生产部署阶段。

似乎使用always覆盖了不允许前一阶段的作业失败的事实。

如果之前的任何集成测试作业失败,我如何防止生产部署作业运行?

标签: gitlabcontinuous-integrationyamlconfig

解决方案


解决方案是使用on_success而不是alwaysdocs):

  rules:
    - if: $DEPLOY_ENV == "production" && $CI_COMMIT_BRANCH == "production"
      when: on_success

推荐阅读