Repository navigation
CI: drop ios-testflight push trigger (fix cancelled-run red on main) - #6214
Conversation
A TestFlight upload is a release action: you only want the latest main state in beta, exactly once per change. The push:[main] trigger forced a concurrency group to dedup concurrent uploads, and GitHub cancels superseded *pending* runs in that group during merge bursts. Those cancellations show as red checks on the intermediate main commits, so main looks like CI is failing (observed: bursts of iOS merges leave cancelled ios-testflight runs; isolated pushes upload fine). The schedule already has the right primitive: the decide job SHA-compares HEAD to the last uploaded commit and uploads only when main advanced (skips green otherwise), retrying an un-uploaded commit if a run was missed. Keep workflow_dispatch for an immediate on-demand beta and the release flow for intentional cuts. Removing push eliminates the cancellation red without losing beta coverage.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Caution Review failedPull request was closed or merged during review No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe iOS TestFlight workflow's ChangesTestFlight Trigger Removal
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Possibly related PRs
Poem
Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 error, 1 warning)
✅ Passed checks (19 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryRemoves the
Confidence Score: 5/5Safe to merge — removes a single workflow trigger with no impact on build logic, signing, or upload correctness. The change is a one-line trigger removal in a CI workflow. The remaining schedule + dispatch paths are unaffected, the decide SHA-gate logic is unchanged, and the upload job guard remains intact. The only findings are two stale comments — cosmetic and carry no runtime consequence. No files require special attention; both stale-comment sites are minor and have inline suggestions. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[workflow_dispatch] --> D[decide job]
B["schedule (nightly 09:10 UTC)"] --> D
D -->|workflow_dispatch| E["should_build = true"]
D -->|schedule: SHA unchanged| F["should_build = false (skip, green)"]
D -->|schedule: SHA advanced| E
E --> G{"github.ref == main?"}
G -->|yes| H[upload job: build + sign + upload to TestFlight]
G -->|no| I[upload skipped]
F --> J[run ends green, no upload]
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A[workflow_dispatch] --> D[decide job]
B["schedule (nightly 09:10 UTC)"] --> D
D -->|workflow_dispatch| E["should_build = true"]
D -->|schedule: SHA unchanged| F["should_build = false (skip, green)"]
D -->|schedule: SHA advanced| E
E --> G{"github.ref == main?"}
G -->|yes| H[upload job: build + sign + upload to TestFlight]
G -->|no| I[upload skipped]
F --> J[run ends green, no upload]
|
Problem
mainshows red from the iOS TestFlight (beta) workflow: its jobs land ascancelledon intermediate main commits during merge bursts (e.g. two iOS merges close together). Isolated pushes upload fine; bursts don't.Root cause
A TestFlight upload is a release action, so the workflow needs a concurrency group to avoid N concurrent uploads. With
push: [main]+concurrency (cancel-in-progress: false), GitHub cancels the superseded pending runs in the group when newer commits queue. Those cancelled runs surface as red checks on the superseded commits → main looks like CI is failing. It is not a build failure, and ios-testflight is not a required check.Fix (first principles)
You only ever want the latest main in beta, exactly once per change. The
decidejob already does exactly that for the schedule lane: it SHA-compares HEAD to the last uploaded commit and uploads only when main advanced (skips green otherwise, retries an un-uploaded commit). So:push: [main](the sole source of the cancellation red).workflow_dispatch(immediate on-demand beta) and the decide-gatedschedule.nightly.ymlremains the rolling dogfood lane.No required checks change. Eliminates the red without losing beta coverage.
🤖 Generated with Claude Code
Need help on this PR? Tag
/codesmithwith what you need. Autofix is disabled.Note
Low Risk
CI trigger-only change; no app, signing, or upload job logic is modified.
Overview
Stops iOS TestFlight (beta) from running on every iOS-related push to
main, which was queuing multiple runs under the workflow concurrency group and leaving cancelled checks on intermediate commits during merge bursts.Beta uploads now rely on the existing schedule (with the
decidejob’s SHA gate so only newmainHEAD ships) and workflow_dispatch for on-demand cuts; release andnightly.ymldogfood are unchanged. Inline comments inios-testflight.ymldocument why push was removed.Reviewed by Cursor Bugbot for commit 9ae2a18. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by cubic
Remove the push trigger from the iOS TestFlight (beta) workflow to stop cancelled runs marking main as red during merge bursts. Beta uploads now run via the scheduled SHA-gated decide job or manual dispatch.
decidejob to upload only when main advances (SHA compare); skipped runs are green and missed uploads retry.workflow_dispatchfor on-demand beta; release flow andnightly.ymlunchanged.Written for commit 9ae2a18. Summary will update on new commits.
Summary by CodeRabbit