Skip to content

Commit fd8909d

Browse files
Lykhoydaclaude
andauthored
fix(story-06): build iOS smoke runner fresh, drop the flaky DerivedData cache (#387) (#492)
The device-resolution fix landed (SMOKE_UDID resolved cleanly, no 'multiple booted'), but the first cache-HIT run then failed RN_FAST_RUNNER_DOWN: a restored DerivedData drives an unreliable test-without-building warm launch. The cache-MISS runs (fresh build-for-testing then warm launch) were the ones with green iOS. Drop the actions/cache + its Xcode-version key step and always build fresh — ~5 min/night, well within the 40 min lane timeout and the ≤45 min budget. Android's Gradle cache is unaffected (that lane is green). Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent f732f40 commit fd8909d

2 files changed

Lines changed: 14 additions & 12 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'rn-dev-agent-plugin': patch
3+
---
4+
5+
Nightly iOS device-smoke lane: build the rn-fast-runner fresh each run instead of restoring DerivedData from cache. A restored DerivedData drove an unreliable `test-without-building` warm launch (`RN_FAST_RUNNER_DOWN`), whereas a fresh `build-for-testing` then warm launch is the known-good path. The ~5 min build is well within the 40 min lane timeout and the nightly budget.

.github/workflows/nightly-device-smoke.yml

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ name: Nightly device smoke
44
# (dist/supervisor.js over MCP stdio) against the contract fixtures, plus an
55
# artifact-integrity lane for the Story 01 release artifacts. Nightly and NOT
66
# merge-gating by design; alerting fires only on 2 consecutive red scheduled
7-
# runs (report job). Smoke lanes build main-HEAD runners (cached) —
8-
# RUNNER_COMMANDS_STALE noise from old release bits is impossible here.
7+
# runs (report job). Smoke lanes build main-HEAD runners fresh (the iOS
8+
# DerivedData is NOT cached — a restored one drives an unreliable warm
9+
# launch) — RUNNER_COMMANDS_STALE noise from old release bits is impossible.
910

1011
on:
1112
schedule:
@@ -40,14 +41,6 @@ jobs:
4041
env:
4142
HUSKY: '0'
4243
run: npm ci
43-
- name: Xcode version for the cache key
44-
run: echo "XCODE_V=$(xcodebuild -version | head -1 | tr ' ' '-')" >> "$GITHUB_ENV"
45-
- name: Restore runner DerivedData
46-
id: dd-cache
47-
uses: actions/cache@v4
48-
with:
49-
path: scripts/rn-fast-runner/build/DerivedData
50-
key: rn-fast-runner-dd-${{ runner.os }}-${{ env.XCODE_V }}-${{ hashFiles('scripts/rn-fast-runner/**') }}
5144
- name: Disable simulator hardware keyboard (software keyboard must appear)
5245
run: defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool false
5346
- name: Pre-boot simulator
@@ -66,8 +59,12 @@ jobs:
6659
xcrun simctl boot "$UDID"
6760
xcrun simctl bootstatus "$UDID" -b
6861
echo "SMOKE_UDID=$UDID" >> "$GITHUB_ENV"
69-
- name: Build runner (cache miss only)
70-
if: steps.dd-cache.outputs.cache-hit != 'true'
62+
- name: Build runner (fresh — no DerivedData cache)
63+
# No actions/cache: a RESTORED DerivedData drives an unreliable
64+
# test-without-building warm launch (RN_FAST_RUNNER_DOWN,
65+
# device-proven), while a fresh build-for-testing then warm launch is
66+
# the known-good path. A ~5 min build per nightly is well within the
67+
# 40 min lane timeout and the ≤45 min nightly budget.
7168
run: |
7269
xcodebuild build-for-testing \
7370
-project scripts/rn-fast-runner/RnFastRunner/RnFastRunner.xcodeproj \

0 commit comments

Comments
 (0)