지원하는 버전에 대해 테스트
README 에 'Python 3.10-3.12 지원' 이라 적혀 있으면, CI 가 매 PR 에 그걸 증명해야 해. 그 없이 그 지원 주장은 발견되기를 기다리는 거짓말이야.
기본 패턴: 지원하는 차원에 대한 matrix. 차원 예:
- 언어 버전 (Python 3.10, 3.11, 3.12, 3.13).
- OS (ubuntu-latest, macos-latest, windows-latest).
- Database driver (postgres 14, 15, 16).
- Framework 버전 (Django 4.2, 5.0).
각 matrix cell 은 자기 job, 병렬로 돌고 자기 log 가짐. UI 의 job 이름은 template 기반 (예: test (python-3.12, ubuntu-latest)).
비용 discipline
Naive 4×3 matrix 는 PR 당 12 run. 비용 급증. 타협 두 개:
- main 엔 full matrix, PR 엔 smoke matrix. PR 은 Linux 의 최저 + 최고 버전만. Main 이 full matrix.
- Linux 실패 시 느린 OS 취소. Job level
fail-fast: true로 첫 실패 시 전체 matrix 중단.