Clear TestFlight export compliance and wait for processing - #75
Merged
Merged
Conversation
Pull request footprint
User-delivered artifact sizes
|
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.
Defect
Two iOS tester builds, 2.0.0 (1801) and 2.0.0 (2001), uploaded to App Store Connect and the release runs went green, but neither reached TestFlight internal testers. App Store Connect held both at Missing Compliance.
Evidence
ITSAppUsesNonExemptEncryptionasfalseinios/App/App/Info.plist(last present at2383fbd^).packages/native/app.config.tsdeclares nothing equivalent, so the prebuilt Info.plist has no answer and App Store Connect waits for one.ios betalane infastlane/Fastfilecalledupload_to_testflightwithskip_waiting_for_build_processing: true. With no changelog, pilot returns right after the upload, before processing, export compliance or distribution. The run could only ever report that the upload finished.Change
app.config.tssetsios.config.usesNonExemptEncryption: falsefor every build. Expo's defaultwithUsesNonExemptEncryptionplugin writesITSAppUsesNonExemptEncryptioninto the generated Info.plist from that field, which is typed and sits outsideios.infoPlist. The mock-host ATS dictionary is left exactly as it was, with no merging needed. Cue encrypts only through the system's HTTPS (URLSession) and Keychain, and Apple treats that as exempt.packages/native/__tests__/app-config.test.tsruns Expo's ownsetUsesNonExemptEncryptionover the normal and the mock-host configs and requires the key to befalsein both. Deleting the config line fails it.ios betalane now usesskip_waiting_for_build_processing: falseand keepsdistribute_external: false. The run waits until App Store Connect finishes processing and fails if pilot hits an error. It then runs pilot's distribution step, which sets export compliance itself if the build still has none, so a build can no longer sit unnoticed at Missing Compliance behind a green run.test/ci/release-paths.test.tsrequires the lane to wait for processing and to stay internal only. Setting the flag back totruefails it.Job timeout
The
iosjob inmobile-release.ymlsets notimeout-minuteson this branch, so it gets GitHub's 360 minute default. In run 36223052262 the job started at 06:13:41 UTC, the fastlane step started at 06:16:27, and the upload finished at 06:30:06. Build and upload took about 14 minutes, so the whole job ran about 17. Apple gives no typical processing time. Its guidance is that a build still Processing after 24 hours may have a problem (https://developer.apple.com/help/app-store-connect/manage-builds/view-builds-and-metadata). The 360 minute default leaves more than five hours for processing, and a build still unprocessed after that fails the run, which is the signal wanted. No timeout change is needed.Sources
ITSAppUsesNonExemptEncryptiontoNOwhen the app uses only exempt encryption, such as HTTPS through URLSession)ios.config.usesNonExemptEncryptionandios.infoPlist: https://docs.expo.dev/versions/latest/config/app/upload_to_testflight: https://docs.fastlane.tools/actions/upload_to_testflight/ (skip_waiting_for_build_processing,uses_non_exempt_encryption), with pilot'sbuild_manager.rbin fastlane 2.237.0 for the early return and the export compliance step