From 688fc288af0eaa8ee6a078d3606fc401853aeeca Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 23 Apr 2026 02:38:01 +0100 Subject: [PATCH] ci: trim duplicate android apk build --- .github/workflows/ci.yml | 4 ---- docs/ci.md | 3 ++- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eb930c1c4d7..7e697bcfc17 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -284,7 +284,6 @@ jobs: { check_name: "android-test-play", task: "test-play" }, { check_name: "android-test-third-party", task: "test-third-party" }, { check_name: "android-build-play", task: "build-play" }, - { check_name: "android-build-third-party", task: "build-third-party" }, ] : [], ), @@ -2271,9 +2270,6 @@ jobs: build-play) ./gradlew --no-daemon --build-cache :app:assemblePlayDebug ;; - build-third-party) - ./gradlew --no-daemon --build-cache :app:assembleThirdPartyDebug - ;; *) echo "Unsupported Android task: $TASK" >&2 exit 1 diff --git a/docs/ci.md b/docs/ci.md index 10c4d0869d4..5c7f64ee1e8 100644 --- a/docs/ci.md +++ b/docs/ci.md @@ -33,7 +33,7 @@ The CI runs on every push to `main` and every pull request. It uses smart scopin | `checks-windows` | Windows-specific test lanes | Windows-relevant changes | | `macos-node` | macOS TypeScript test lane using the shared built artifacts | macOS-relevant changes | | `macos-swift` | Swift lint, build, and tests for the macOS app | macOS-relevant changes | -| `android` | Android build and test matrix | Android-relevant changes | +| `android` | Android unit tests for both flavors plus one debug APK build | Android-relevant changes | ## Fail-Fast Order @@ -54,6 +54,7 @@ Local changed-lane logic lives in `scripts/changed-lanes.mjs` and is executed by On pushes, the `checks` matrix adds the push-only `compat-node22` lane. On pull requests, that lane is skipped and the matrix stays focused on the normal test/channel lanes. The slowest Node test families are split or balanced so each job stays small: channel contracts split registry and core coverage into six weighted shards total, bundled plugin tests balance across six extension workers, auto-reply runs as three balanced workers instead of six tiny workers, and agentic gateway/plugin configs are spread across the existing source-only agentic Node jobs instead of waiting on built artifacts. Broad browser, QA, media, and miscellaneous plugin tests use their dedicated Vitest configs instead of the shared plugin catch-all. The broad agents lane uses the shared Vitest file-parallel scheduler because it is import/scheduling dominated rather than owned by a single slow test file. `runtime-config` runs with the infra core-runtime shard to keep the shared runtime shard from owning the tail. `check-additional` keeps package-boundary compile/canary work together and separates it from runtime topology gateway/architecture work; the boundary guard shard runs its small independent guards concurrently inside one job, and the gateway watch regression uses the minimal `gatewayWatch` build profile instead of rebuilding the full CI artifact sidecar set. +Android CI runs both `testPlayDebugUnitTest` and `testThirdPartyDebugUnitTest`, then builds the Play debug APK. The third-party flavor has no separate source set or manifest; its unit-test lane still compiles that flavor with the SMS/call-log BuildConfig flags, while avoiding a duplicate debug APK packaging job on every Android-relevant push. `extension-fast` is PR-only because push runs already execute the full bundled plugin shards. That keeps changed-plugin feedback for reviews without reserving an extra Blacksmith worker on `main` for coverage already present in `checks-node-extensions`. GitHub may mark superseded jobs as `cancelled` when a newer push lands on the same PR or `main` ref. Treat that as CI noise unless the newest run for the same ref is also failing. Aggregate shard checks use `!cancelled() && always()` so they still report normal shard failures but do not queue after the whole workflow has already been superseded.