Skip to content

Release: build the IPA with the newest installed Xcode - #16

Merged
ThyFriendlyFox merged 1 commit into
mainfrom
fix/release-xcode26
Aug 8, 2026
Merged

Release: build the IPA with the newest installed Xcode#16
ThyFriendlyFox merged 1 commit into
mainfrom
fix/release-xcode26

Conversation

@ThyFriendlyFox

Copy link
Copy Markdown
Collaborator

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-ipa job now picks the newest /Applications/Xcode_*.app by version sort and prints the choice, so any future SDK refusal names its SDK.

Two scars from the same debugging session, fixed while here:

  • the .ipa artifact uploads before validation — a refused-but-signed package was previously thrown away with the run, and inspecting it cost a full archive cycle;
  • the secrets guard checks all five Apple secrets by shape (emptiness, 10-char key id, UUID issuer — never contents). Three of the six secrets were stored empty or stale at least once, each surfacing minutes downstream in a different error's clothes.

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.

  • Builds clean
  • Full signing rehearsal green, cert → ASC validation
  • Docs: RELEASING.md already describes this flow; no drift
  • No diagnostics left in the merge

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

…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>
@ThyFriendlyFox
ThyFriendlyFox merged commit ffea5b1 into main Aug 8, 2026
6 checks passed
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