본문으로 건너뛰기

11.5 CI Release Gate

PR check와 nightly suite를 분리한 Capstone CI 재현 화면

Pipeline 단계

checkout → npm ci → browser install → lint/typecheck
→ smoke test → regression shards → merge report
→ artifact upload → release decision

PR과 scheduled run 분리

Run포함목표
PRChromium smoke, critical API빠른 feedback
MainChromium regressionmerge 후 안정성
Nightly3 browsers, visual, a11y, external sandbox넓은 compatibility
Releaseversion-pinned full gate배포 승인 evidence

GitHub Actions 핵심

- name: Install dependencies
run: npm ci
- name: Install Chromium
run: npx playwright install --with-deps chromium
- name: Run smoke tests
run: npx playwright test --grep @smoke --project=chromium
- name: Upload report
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v5
with:
name: playwright-report
path: playwright-report/
retention-days: 14

Action major version과 Playwright image tag는 현재 조직 정책에 맞춰 검증하고 update합니다. Docker image와 package의 Playwright version이 어긋나면 browser executable을 찾지 못할 수 있습니다.

Gate 기준

  • P0 smoke failure: release block
  • Flaky retry pass: 성공으로 끝내더라도 flake backlog와 owner 지정
  • Visual diff: human approval 전 baseline update 금지
  • A11y known issue: fingerprint 증가 시 block
  • External sandbox unavailable: product failure와 environment failure를 구분

Artifact retention

Trace, video, HAR, storage state에는 민감 정보가 포함될 수 있습니다. 실패 분석에 필요한 기간만 보존하고 report 접근 권한을 제한합니다.

실습

  1. Local command와 CI command를 동일하게 실행합니다.
  2. Smoke tag 하나를 실패시켜 report upload가 !cancelled()에서 실행되는지 확인합니다.
  3. Two-shard blob report를 merge합니다.
  4. Browser cache와 binary version mismatch를 재현하고 runbook에 기록합니다.

실행 파일: GitHub Actions example

참고: Continuous Integration, Docker, Best Practices