CI/CD 릴리스 통과 기준

Nest CI/CD 산출물 게이트

파이프라인은 초록 체크를 만드는 장식이 아니다. 의존성 설치, 타입 검사, 테스트, 컨테이너 이미지, 배포, 헬스체크, 롤백까지 각 단계가 무엇을 입력으로 받고 무엇을 산출하며 어디서 멈춰야 하는지 정해야 한다.

입력 고정 source, lockfile, env, secret 경계를 분리해 재현 가능한 시작점을 만든다.
산출물 증명 test report, image digest, artifact가 같은 커밋에서 나온 결과인지 묶는다.
차단·복구 health fail, vuln, migration 위험이 보이면 배포를 멈추고 이전 이미지로 돌아간다.
01

검증 단계

lint, typecheck, unit, e2e를 분리해 실패 원인이 어디인지 바로 보이게 한다.

하나의 거대한 job은 복구를 늦춘다
02

시크릿 경계

빌드와 테스트에 필요한 env를 분리하고 production secret은 배포 job에서만 접근하게 한다.

PR 로그에 secret이 남으면 안 된다
03

이미지 생성

lockfile, Node 버전, build output을 기준으로 재현 가능한 컨테이너 이미지를 만든다.

latest 태그만 믿지 않는다
04

배포 확인

readiness, migration 상태, smoke endpoint, log 수집을 통과해야 트래픽을 넘긴다.

프로세스가 켜진 것과 서비스 가능은 다르다
05

롤백 경로

이전 이미지와 환경값, DB migration 호환성을 확인해 되돌릴 수 있는 범위를 정한다.

DB 변경은 단순 롤백을 막을 수 있다
Build
재현 가능한 산출물 같은 lockfile과 Node 버전에서 같은 결과가 나와야 한다.
캐시 오염을 확인한다
Test
배포 차단 증거 unit, e2e, coverage 실패가 배포를 멈추게 한다.
flaky 테스트는 별도 추적한다
Deploy
환경별 적용 staging과 production의 env, secret, migration 순서를 나눈다.
승인 게이트를 둔다
Rollback
복구 가능성 이전 이미지와 설정으로 돌아갈 수 있는지, 데이터 호환이 되는지 확인한다.
forward fix가 필요한 경우도 있다

릴리스 확인

실패 차단 typecheck, test, image scan 실패가 실제로 배포 job을 멈추는지 확인한다.
헬스체크 배포 후 readiness와 smoke 요청이 통과해야 트래픽이 붙는지 본다.
롤백 리허설 이전 이미지로 되돌릴 때 migration과 env가 호환되는지 확인한다.