Skip to content

CI: build APK once, lint in parallel, iOS/E2E manual only - #4

Merged
kjeldahl merged 2 commits into
mainfrom
ccr-4e332e49-dr9mdt
Oct 13, 2026
Merged

kjeldahl merged 2 commits into
mainfrom
ccr-4e332e49-dr9mdt

Conversation

@kjeldahl

@kjeldahl kjeldahl commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

#3 merged; rebased on main.

Why

PR #3 CI: Android build ~7.5 min, iOS ~7 min (macOS), E2E rebuilt the APK for all 4 ABIs (16m25s) before the emulator even started.

Changes

  • build.yml
    • gradle/actions/setup-gradle + --build-cache instead of actions/cache. Before: 1.4 GB cache restored, 0 tasks from cache. Cache saved from PRs too (cache-read-only: false), not only main: first run on a PR without a main cache is cold (~+2.5 min dependency resolution), later pushes start warm.
    • lintVitalRelease moved to own lint job, runs alongside build.
    • e2e job: manual only (workflow_dispatch, input e2e, default on). That run builds arm64-v8a,x86_64; E2E installs the same APK. Otherwise arm64-v8a only, as before.
    • Cancel superseded PR runs.
    • pull_request on any base, so stacked PRs get a build.
  • activation-e2e.yml: workflow_call only; downloads the build's APK artifact, no Gradle/npm install. Timeout 60 → 30 min.
  • ios-ci.yml: macOS build only on workflow_dispatch. Typecheck/test job still runs on PRs/main in case branch protection requires "Typecheck and unit tests" (skipped job still satisfies a required check).

Testing

  • actionlint clean on all three workflows.
  • CI green before rebase: test, lint (~9 min, parallel), build (~11 min, cold cache). e2e/release skipped as intended.
  • E2E/iOS manual paths untested until dispatched.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Sde9uW6eic8ezJagyJc29R

- build.yml: setup-gradle + --build-cache instead of actions/cache (no task
  ever hit the cache); lintVital moved to own parallel lint job
- E2E: manual only (build.yml dispatch, "e2e" input); reuses build's APK
  (arm64-v8a + x86_64 on that run) instead of its own 4-ABI build (~16 min)
- ios-ci.yml: macOS build only on workflow_dispatch; typecheck/test job
  still on PRs in case branch protection requires it
- cancel superseded PR builds; build on PRs to any base (stacked PRs)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sde9uW6eic8ezJagyJc29R
PR build ran cold (no main cache yet; setup-gradle read-only on PRs):
+2.5 min dep resolution. Later pushes on a PR now start warm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sde9uW6eic8ezJagyJc29R
@kjeldahl
kjeldahl force-pushed the ccr-4e332e49-dr9mdt branch from d56a750 to 8c6f472 Compare October 13, 2026 16:01
@kjeldahl
kjeldahl changed the base branch from ccr-c14e7425-4ntke7 to main October 13, 2026 16:01
@kjeldahl
kjeldahl merged commit 49c580c into main Oct 13, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants