11.5 CI Release Gate
Pipeline 단계
checkout → npm ci → browser install → lint/typecheck
→ smoke test → regression shards → merge report
→ artifact upload → release decision
PR과 scheduled run 분리
| Run | 포함 | 목표 |
|---|---|---|
| PR | Chromium smoke, critical API | 빠른 feedback |
| Main | Chromium regression | merge 후 안정성 |
| Nightly | 3 browsers, visual, a11y, external sandbox | 넓은 compatibility |
| Release | version-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 접근 권한을 제한합니다.
실습
- Local command와 CI command를 동일하게 실행합니다.
- Smoke tag 하나를 실패시켜 report upload가
!cancelled()에서 실행되는지 확인합니다. - Two-shard blob report를 merge합니다.
- Browser cache와 binary version mismatch를 재현하고 runbook에 기록합니다.
실행 파일: GitHub Actions example