当上一阶段在 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
代替always
(docs):
rules:
- if: $DEPLOY_ENV == "production" && $CI_COMMIT_BRANCH == "production"
when: on_success
我在项目的 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
代替always
(docs):
rules:
- if: $DEPLOY_ENV == "production" && $CI_COMMIT_BRANCH == "production"
when: on_success