Release: build the IPA with the newest installed Xcode - #16
Merged
Conversation
…e job
App Store Connect refused the v0.1.3 package with its own words: "built with
the iOS 18.5 SDK. All iOS and iPadOS apps must be built with the iOS 26 SDK or
later." The runner image CARRIES Xcode 26.3 — its default is 16.4 — so the fix
is selection, not infrastructure: pick the newest /Applications/Xcode_*.app by
version sort and print the choice, so the next SDK refusal names its SDK.
Two scars from the same debugging session, fixed while here:
- the .ipa artifact now uploads BEFORE validation. It sat after, so the
refused-but-perfectly-signed package was thrown away with the run, and
inspecting it cost a full archive cycle.
- the secrets guard now checks all five Apple secrets by SHAPE (empty-ness,
a 10-char key id, a UUID issuer — lengths and patterns only, never
contents). Three of the six secrets have been stored empty or stale at
least once, and each time the failure surfaced minutes downstream wearing
a different error's clothes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
App Store Connect refused the v0.1.3 upload with its own words: "built with the iOS 18.5 SDK. All iOS and iPadOS apps must be built with the iOS 26 SDK or later." The macos-15 runner carries Xcode 26.3 — its default is 16.4 — so the fix is selection, not infrastructure: the
ios-ipajob now picks the newest/Applications/Xcode_*.appby version sort and prints the choice, so any future SDK refusal names its SDK.Two scars from the same debugging session, fixed while here:
.ipaartifact uploads before validation — a refused-but-signed package was previously thrown away with the run, and inspecting it cost a full archive cycle;Gesture-law impact
None — CI only.
Verified — function and feel
Full rehearsal from this branch (run 31143950652): all four jobs green — Android APK, simulator build, signed IPA (archived with Xcode 26.3, validated by App Store Connect), draft release published with all three artifacts (rehearsal draft since deleted). TestFlight upload correctly skipped on dispatch — it fires only on tag pushes.
After merge, shipping v0.1.3 for real: delete and re-push the tag so it runs the fixed workflow —
git push origin :refs/tags/v0.1.3 && git tag -f v0.1.3 origin/main && git push origin v0.1.3🤖 Generated with Claude Code