Skip to content

Exact package candidate iOS contract jobs fail on every Pods cache hit: pod install skip leaves ReactCodegen sources ungenerated #98

Description

@thiagobrez

What breaks

Every push to main where example/ios/Podfile.lock is unchanged fails the three iOS contract jobs (ios27.native, ios27.fallback, ios26.auto-fallback) in the Exact package candidate workflow within ~1 minute of the build starting:

error: Build input file cannot be found:
'.../example/ios/build/generated/ios/ReactCodegen/rnworklets/rnworklets-generated.mm'.
(in target 'ReactCodegen' from project 'Pods')

Same for rnreanimated-generated.mm, rngesturehandler_codegen-generated.mm, and ReorderableViewSpec/States.cpp. Observed on the push run for f3b11c7 (run 34016165910) and reproduced identically on the nightly scheduled run (34020531106), so it is deterministic, not a flake.

Root cause

#97 (commit 580b7f2) added a Pods cache to the contract job and made the "Verify Apple runtime and prepare native app" step skip pod install when the cache hits exactly:

if [[ "$COCOAPODS_CACHE_HIT" != 'true' ]]; then
  ( cd example && bundle install && bundle exec pod install --project-directory=ios )
fi

React Native codegen runs inside pod install and writes its generated sources to example/ios/build/generated/ios/, which is outside the cached example/ios/Pods path. A restored cache therefore produces a Pods project whose ReactCodegen target references source files that were never generated, and the Detox iOS build fails. The first run after #97 passed only because the cache was empty; every subsequent run with a stable Podfile.lock hits the key and fails.

ci.yml already documents this class of hazard on its own Pods cache and deliberately runs the Gemfile-pinned pod install even on a cache hit.

Fix

Run bundle install + bundle exec pod install unconditionally in the contract job, keeping the cache purely as a speedup for the Pods checkout — mirroring the ci.yml convention.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions