Сборка с падающими тестами уезжает в прод
После перехода на частые релизы выросло число дефектов, найденных уже в проде. Разбирая один из инцидентов, вы видите, что юнит-тесты в этой сборке падали, но выкат всё равно состоялся. Конфигурация пайплайна:
stages: [build, test, deploy]
build_app:
stage: build
script: ["make build"]
unit_tests:
stage: test
script: ["make test"]
allow_failure: true
deploy_prod:
stage: deploy
script: ["make deploy"]
Почему сборка с падающими тестами дошла до прода?
- Из-за `allow_failure: true` падение тестов не считается блокирующим: пайплайн продолжается и стадия деплоя выполняется.
- Потому что стадия deploy объявлена последней в списке stages и по этой причине выполняется независимо от результатов предыдущих стадий.
- Потому что у задачи deploy_prod не указана зависимость от unit_tests, поэтому она стартует параллельно со стадией тестов.
- Потому что юнит-тесты в принципе не влияют на статус пайплайна: заблокировать выкат может только шаг ручной приёмки релиза.
