当上一阶段在 GItlab 上失败时阻止部署 CI

Preventing Deploy When Previous Stage Failed on GItlab CI

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

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

Deploy之前的阶段是Integration Tests,这个阶段的所有作业都不允许失败(根据the docs这是默认的)。

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

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

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

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

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

解决方案是使用on_success代替alwaysdocs):

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