Skip to content

test: validate per-app CI matrix pipeline (fork)#5

Closed
msluszniak wants to merge 23 commits into
mainfrom
@ms/ci-coverage-fork-test
Closed

test: validate per-app CI matrix pipeline (fork)#5
msluszniak wants to merge 23 commits into
mainfrom
@ms/ci-coverage-fork-test

Conversation

@msluszniak
Copy link
Copy Markdown
Owner

Description

Test PR on fork for software-mansion#1112.

Same as @ms/ci-coverage plus one fork-only commit removing the github.repository == 'software-mansion/...' guard so the workflows actually run here. Draft gating preserved.

Test phases (will be exercised via subsequent commits):

  • Phase 1: cold-cache full matrix
  • Phase 2: noop push (markers should survive)
  • Phase 3: single-app-touch (matrix should narrow)
  • Phase 4: shared-package change (everything fans out)
  • Phase 5: draft toggle gating

Not for merge.

Replaces the LLM-only Android/iOS build workflows with one matrix-based
workflow per platform that gates each app's build on `dorny/paths-filter`.
Adds coverage for computer-vision, speech, text-embeddings, and bare-rn
demos, plus a Jest smoke test for bare-rn. Skips builds on draft PRs and
fires on ready_for_review so flipping a draft to ready triggers CI.

Closes software-mansion#963.
… hash

- bundle job now runs `yarn prepare` before bundling bare-rn so
  react-native-executorch-bare-resource-fetcher's lib/ exists for metro
  (Expo apps don't need it; expo export resolves workspace deps directly).
- iOS composite caches CocoaPods recipes + installed Pods keyed by Podfile.lock,
  saving ~3-5 min per cell on cache hits.
- compute-app-hash.js excludes .github/workflows/build-apps.yml from the
  content hash. Workflow edits still trigger the matrix, but each cell hits
  its existing marker and skips. Build-behavior workflow edits (with:,
  runs-on:, env:) need a manual cache clear via the UI.
Pull_request runs scope caches to refs/pull/N/merge, which gets dereferenced
when the PR is closed. Switch to a push-driven trigger so caches save against
refs/heads/<branch> and survive close/reopen.

- push: branches ['**'] covers every commit to every branch.
- pull_request: types narrowed to [opened, reopened, ready_for_review] —
  the events with no corresponding push.
- pull_request: synchronize removed (push already covers every commit).
- Workflow-level concurrency keyed by event_name + branch so push and
  pull_request runs don't cancel each other.
- Draft status resolved via `gh pr list` for push events, preserving the
  no-CI-on-drafts rule from software-mansion#963 even without a pull_request payload.
Two issues compounded into bare-rn rebuilding on a CV-only push:

1. dorny defaulted to comparing against the PR base, so each push re-evaluated
   the cumulative PR diff and pulled every app whose filter ever matched into
   the matrix. Setting `base: event.before || pull_request.base.sha` restricts
   the diff to just the current push (with PR-base fallback for opened /
   reopened / ready_for_review).

2. The Gradle (~3 GB) and CocoaPods (~500 MB × 5 iOS apps) caches saved during
   a single run, plus setup-java's redundant gradle cache, pushed the repo over
   GitHub's 10 GB cache quota and evicted the tiny (~250 B) build markers under
   LRU. Cells appeared in the matrix on subsequent pushes (legitimately, per
   PR-base diff) but missed the cache and rebuilt. Dropping these peer caches
   so markers survive — markers gate entire build cells, which is worth more
   than the 3-10 min those caches saved on warm-up.
@msluszniak msluszniak marked this pull request as draft May 14, 2026 12:45
@msluszniak msluszniak marked this pull request as ready for review May 14, 2026 13:00
@msluszniak
Copy link
Copy Markdown
Owner Author

Test pipeline complete; fix landed on software-mansion/react-native-executorch @ms/ci-coverage as a0bcf39.

@msluszniak msluszniak closed this May 14, 2026
@msluszniak msluszniak deleted the @ms/ci-coverage-fork-test branch May 14, 2026 13:04
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.

1 participant