Fail Fast, Preserve Evidence

CI 실패 처리는 빠른 중단, 제한된 재실행, 항상 보존으로 나눈다

재실행은 실패를 숨기는 장치가 아니라 불안정 원인을 분류하기 위한 제한된 절차여야 합니다.

1. 먼저 멈춘다

build, unit, e2e, coverage 중 하나가 실패하면 해당 커밋의 병합 판단은 중단된다.

빨리 실패해야 피드백 비용이 낮다.
실패한 단계가 다음 행동의 출발점이다.

2. 원인을 분류한다

코드 결함인지, 외부 의존성 문제인지, 테스트 환경 불안정인지 증거로 나눈다.

항상 같은 테스트가 실패하면 코드 수정 우선
네트워크, 시간, DB 준비 문제면 환경 점검

3. 자료는 남긴다

재실행 여부와 상관없이 로그, 리포트, 스크린샷, coverage를 보존한다.

if: always()로 실패 후 업로드
다음 수정자가 같은 실패를 재현할 단서 확보
재실행 허용

인프라 지연, 컨테이너 준비, 외부 서비스 타임아웃처럼 불안정 징후가 명확할 때 1회로 제한한다.

재실행 금지

같은 assertion, coverage 기준, build 오류가 반복되면 즉시 수정 대상으로 돌린다.