Skip to content

fix(ios-release): enforce current TestFlight toolchain - #1830

Merged
beruro merged 2 commits into
developfrom
junyu/fix-ios-testflight-toolchain
Sep 15, 2026
Merged

beruro merged 2 commits into
developfrom
junyu/fix-ios-testflight-toolchain

Conversation

@beruro

@beruro beruro commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

Problem

The TestFlight workflow selected Xcode 26 through DEVELOPER_DIR, but Tauri resolved the system-selected Xcode 16.4 and produced an IPA with the iOS 18.5 SDK. App Store Connect rejected that IPA with HTTP 409. altool still returned exit code 0, so the upload job appeared successful even though validation and upload both failed.

Solution

Switch the runner's system Xcode selection to the discovered Xcode 26 installation, verify xcode-select, xcrun, and the iPhoneOS SDK before building, and reject exported apps whose DTSDKName is older than iOS 26. Capture altool output and require explicit validation/upload success markers while treating known failure output as an error even when the command exits successfully.

Potential risks

The workflow intentionally stops if GitHub changes the installed Xcode path layout or Apple changes all recognized altool success wording. This favors a visible release failure over a false successful upload. The checks affect only the protected iOS release workflow and do not change app runtime behavior or persisted data. Rollback is reverting this commit, though that would restore the false-positive upload risk.

Verification

  • node --test scripts/ios-release/*.test.mjs — passed 29 tests, including outdated SDK rejection and an altool 409 response with exit code 0
  • Extracted every run block from .github/workflows/ios-testflight.yml and parsed it with bash -n — passed
  • Parsed .github/workflows/ios-testflight.yml with Ruby YAML — passed
  • git diff --check origin/develop...HEAD — passed
  • A real signed TestFlight upload has not run on this branch; it will run from the protected develop environment after merge
  • Screenshots are not applicable because this changes release automation only

Comment thread scripts/ios-release/readiness.mjs Fixed
@beruro
beruro merged commit 9052756 into develop Sep 15, 2026
16 checks passed
@Harry19081 Harry19081 added maintenance Maintenance, CI, build, release, cleanup, or tooling work dev-tooling Developer tooling, build, CI, tests, diagnostics, or release labels Sep 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dev-tooling Developer tooling, build, CI, tests, diagnostics, or release maintenance Maintenance, CI, build, release, cleanup, or tooling work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants