TypeScript CI/CD
CI/CD 파이프라인의 품질 기준
커밋이 배포로 이어지기 전에 타입 검사, 테스트, 빌드, 이미지 스캔,
승인 단계를 끊어서 실패 위치를 분명하게 만든다.
01
소스 이벤트
PR은 검증 중심, tag는 배포 중심으로 workflow trigger를 분리한다.
on: pull_request
02
빠른 검증
타입 검사와 lint는 캐시를 사용해 초반에 실패시키고 비용 큰 작업을
막는다.
fail fast
03
테스트 기준표
Node 버전, 패키지 범위, e2e 필요 여부를 분리해 병렬 실행한다.
기준표
04
배포 승인
이미지 digest, 마이그레이션 계획, smoke test 결과가 모여야
프로덕션으로 간다.
promotion
모노레포
변경된 패키지부터 계산해 필요한 job만 실행한다.
프로젝트 레퍼런스와 workspace dependency graph를 CI 입력으로
쓴다.
affected packages
Docker
이미지 태그보다 digest를 배포 기록으로 남긴다.
같은 태그가 덮여도 실제 배포된 이미지를 재현할 수 있다.
immutable artifact
실패 원인
검증, 패키징, 배포, 런타임 실패를 서로 다른 job 이름으로
나눈다.
실패 지점이 모호하면 재시도와 롤백 판단이 늦어진다.
진단 경계
파이프라인 품질 신호
캐시 키
lockfile과 tsconfig 변화가 캐시 무효화에 반영된다.
승인자
프로덕션 환경에는 별도 승인과 감사 로그가 남는다.
스모크 테스트
배포 직후 health, auth, 핵심 API 한 개 이상을 실제 URL로
확인한다.
게이트 순서
typecheck -> lint -> unit-test -> build -> image-scan -> deploy -> smoke-test