From 81e360a99ea3c5449581683a54de2c1cf18699d9 Mon Sep 17 00:00:00 2001 From: kws Date: Mon, 11 May 2026 16:23:46 +0900 Subject: [PATCH] ci: limit heavy checks to main and tags --- .github/workflows/android.yml | 17 ++++++++++++++++- CHANGELOG.md | 6 ++++++ README.md | 2 +- docs/verification-matrix.md | 10 ++++++++-- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 0dd710b2..317b52f7 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -5,6 +5,8 @@ on: push: branches: - main + tags: + - "v*" concurrency: group: ci-${{ github.ref }} @@ -85,11 +87,24 @@ jobs: ./gradlew \ :app:assembleDemoDebug \ :app:assembleProdDebug \ - :app:assembleProdRelease \ :benchmark:assemble + release-assemble: + runs-on: ubuntu-latest + if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) }} + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "17" + - uses: gradle/actions/setup-gradle@v4 + - name: Release Assemble + run: ./gradlew :app:assembleProdRelease + coverage: runs-on: ubuntu-latest + if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) }} needs: [unit-tests] env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ce160e6..679160bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ 이 문서는 사용자와 리뷰어가 버전별로 무엇이 바뀌었는지 빠르게 확인할 수 있도록 유지합니다. +## Unreleased + +### 개발자 영향 + +- CI: PR에서는 debug assemble과 benchmark assemble만 실행하고, `prodRelease` assemble과 Kover coverage는 `main`/`v*` tag push에서만 실행하도록 분리했습니다. 릴리스 안전성은 유지하면서 PR 피드백 시간을 줄입니다. + ## 1.1.0 - 2026-05-11 ### 사용자 영향 diff --git a/README.md b/README.md index d939c24c..a19973a8 100644 --- a/README.md +++ b/README.md @@ -211,4 +211,4 @@ seed 생성과 `prod` 런타임 검색은 모두 `opinet.apikey`만 사용합니 ``` 전체 명령과 상황별 기준은 [검증 매트릭스](docs/verification-matrix.md)를 따릅니다. -GitHub Actions `Android CI`는 `static-analysis`, `unit-tests`, `screenshot-tests`, `assemble`, `coverage` 5개 job으로 실행되며, assemble job은 demo/prod debug, prod release, benchmark assemble을 확인합니다. +GitHub Actions `Android CI`는 PR에서 `static-analysis`, `unit-tests`, `screenshot-tests`, `assemble`을 실행합니다. `assemble`은 demo/prod debug와 benchmark를 확인하고, `main`/`v*` tag push에서만 `release-assemble`과 `coverage`를 추가 실행합니다. diff --git a/docs/verification-matrix.md b/docs/verification-matrix.md index efd4ee55..34c5c4a2 100644 --- a/docs/verification-matrix.md +++ b/docs/verification-matrix.md @@ -83,9 +83,15 @@ git diff --check -- README.md AGENTS.md .impeccable.md CHANGELOG.md docs/agent-w ## CI 연결 -GitHub Actions는 v1.1 기준 5개 job으로 분리됩니다: `static-analysis` (spotlessCheck + lint), `unit-tests` (전 모듈 단위 테스트), `screenshot-tests` (verifyRoborazziDebug), `assemble` (demo/prod debug+release), `coverage` (koverXmlReport, unit-tests 완료 후 실행). 자세한 내용은 `.github/workflows/android.yml`을 참고합니다. +GitHub Actions는 PR 피드백 시간을 줄이기 위해 PR과 release 성격의 push를 다르게 검증합니다. 자세한 내용은 `.github/workflows/android.yml`을 참고합니다. -`demoRelease`/`prodRelease` assemble은 기본 CI matrix에 포함하지 않습니다. R8/minify 회귀를 모든 PR에서 잡아야 하거나 CI 시간이 감당 가능하다고 판단하면, 이 문서와 `.github/workflows/android.yml`을 같은 변경에서 갱신합니다. +| Trigger | 실행 범위 | +| --- | --- | +| `pull_request` | `static-analysis` (spotlessCheck + lint), `unit-tests` (전 모듈 단위 테스트), `screenshot-tests` (verifyRoborazziDebug), `assemble` (demo/prod debug + benchmark) | +| `push` to `main` | PR 범위 + `release-assemble` (`:app:assembleProdRelease`) + `coverage` (`koverXmlReport`, unit-tests 완료 후 실행) | +| `push` tag `v*` | PR 범위 + `release-assemble` + `coverage` | + +`prodRelease` assemble과 coverage는 기본 PR matrix에 포함하지 않습니다. R8/minify 회귀나 coverage report가 PR마다 필요하다고 판단하면, 이 문서와 `.github/workflows/android.yml`을 같은 변경에서 갱신합니다. ## 기기 기반 UI 확인