Build the App Store binary where the SDK is one Apple accepts - #24
Merged
Conversation
Build 16 was rejected with ITMS-90301: Apple is not currently accepting applications built with this version of the OS. The machine that built it has one Xcode, a beta, whose only macOS SDK is a beta SDK, and the SDK is recorded in the binary. The store build moves to a macos-15 runner, which carries released Xcodes only. It checks out the dispatched ref rather than the tag, because the tag's copy of scripts/ is the copy that failed, and then refuses unless App, Packages, project.yml and ItsPaint.xcodeproj are byte-identical to the tag. The build number is an input, because Apple refuses a repeat and the tag cannot be moved to bump it.
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.
Build 16 was archived, signed, uploaded — and rejected:
Nothing about the archive was wrong. The machine that made it has exactly one
Xcode, a beta (26.6, 17F113), whose only macOS SDK is a beta SDK, and the SDK
is recorded in the binary. There is no flag that changes it. My mistake: I
built the store binary on a laptop without checking what SDK it would stamp,
having just verified everything else about that build in detail.
The fix
A
workflow_dispatchjob onmacos-15, where GitHub ships only releasedXcodes, selecting the newest and printing it every run — the failure was
invisible until Apple emailed about it, so the version goes in the log whether
or not it works.
Three things it does that the obvious version would get wrong:
source is byte-identical to the tag. Release tooling gets fixed after a
release at least as often as before it:
v0.18.0is tagged one commit beforethe export learned to sign without an Xcode account, so building the tag runs
the broken script. Docs and scripts may move between the tag and the build;
App,Packages,project.ymlandItsPaint.xcodeprojmay not.seen, and the tag that pins the marketing version cannot be moved or deleted,
so without this a rejected upload costs a whole version number.
ITSPAINT_BUILD_NUMBERoverridesCURRENT_PROJECT_VERSIONat archive time.pkg by the other; missing the installer one fails after the archive, which
is the shape that reads like a build problem.
It uploads and stops. Attaching the build to a version and submitting stays an
App Store Connect API call, because a submission is a thing a person decides to
send.
New secrets:
MACOS_APPSTORE_P12,MACOS_APPSTORE_PASSWORD,MACOS_APPSTORE_PROFILE,ASC_KEY_ID,ASC_ISSUER_ID,ASC_PRIVATE_KEY.🤖 Generated with Claude Code