User Story
As a Pyrycode mobile developer (human + agent), I want every PR and every push to main to run ./gradlew check assembleDebug on GitHub Actions, so that the deterministic style / lint / build / test gates are enforced by CI rather than relying on the developer agent's self-run.
Context
The developer agent currently self-runs ./gradlew test && lint && assembleDebug before opening a PR, and code-review verifies. Both are stochastic. CI is the deterministic safety net that closes the gap.
Spotless (#83) and Compose Lint Checks (#84) have both landed, so the umbrella ./gradlew check task already exercises formatting, lint (with abortOnError), and unit tests. This ticket wires the CI workflow on top.
Acceptance Criteria
Technical Notes
- Standard Gradle caching pattern via
setup-gradle@v3 (handles ~/.gradle/caches automatically)
- DO NOT add a branch protection rule in this ticket — informal "wait for green CI" is fine; protection rules are a follow-up
Size Estimate
XS — single new file (~30–50 lines of YAML), no Kotlin/Gradle changes.
Figma
N/A — tooling/infra ticket.
Split from #72.
User Story
As a Pyrycode mobile developer (human + agent), I want every PR and every push to
mainto run./gradlew check assembleDebugon GitHub Actions, so that the deterministic style / lint / build / test gates are enforced by CI rather than relying on the developer agent's self-run.Context
The developer agent currently self-runs
./gradlew test && lint && assembleDebugbefore opening a PR, and code-review verifies. Both are stochastic. CI is the deterministic safety net that closes the gap.Spotless (#83) and Compose Lint Checks (#84) have both landed, so the umbrella
./gradlew checktask already exercises formatting, lint (withabortOnError), and unit tests. This ticket wires the CI workflow on top.Acceptance Criteria
.github/workflows/ci.ymltriggers onpull_requestandpushtomain(usepull_request, NOTpull_request_target— the latter exposes secrets to fork PRs)./gradlew check assembleDebugactions/setup-java@v4andgradle/actions/setup-gradle@v3(or current stable — verify via context7 / repo READMEs)gradle/wrapper-validation-actionor the equivalent insetup-gradle)Technical Notes
setup-gradle@v3(handles~/.gradle/cachesautomatically)Size Estimate
XS — single new file (~30–50 lines of YAML), no Kotlin/Gradle changes.
Figma
N/A — tooling/infra ticket.
Split from #72.