-
Notifications
You must be signed in to change notification settings - Fork 79
feat: archive_and_upload.py — TestFlight pipeline #65
Copy link
Copy link
Open
Labels
P3Polish and low-urgency itemsPolish and low-urgency itemsblast:2Single domain — 2-5 files within one feature folderSingle domain — 2-5 files within one feature folderclarity:2Problem defined, solution unclear — needs a design spikeProblem defined, solution unclear — needs a design spikeenhancementNew feature or requestNew feature or requestrisk:4Cross-domain impact, state management, concurrency concernsCross-domain impact, state management, concurrency concernssize:MModerate scope, some design neededModerate scope, some design neededtype:featureNew functionality or capabilityNew functionality or capability
Description
Metadata
Metadata
Assignees
Labels
P3Polish and low-urgency itemsPolish and low-urgency itemsblast:2Single domain — 2-5 files within one feature folderSingle domain — 2-5 files within one feature folderclarity:2Problem defined, solution unclear — needs a design spikeProblem defined, solution unclear — needs a design spikeenhancementNew feature or requestNew feature or requestrisk:4Cross-domain impact, state management, concurrency concernsCross-domain impact, state management, concurrency concernssize:MModerate scope, some design neededModerate scope, some design neededtype:featureNew functionality or capabilityNew functionality or capability
Problem
"Cut a TestFlight build" is a 5-step ritual: archive → export → upload → wait → check processing status. High value to automate, but high risk because of credential handling.
Sketch
Wraps
xcodebuild archive→xcodebuild -exportArchive→xcrun notarytool/ App Store Connect API upload.Reuses
xcode/builder.pyfor subprocess + timeout patternscommon/env_config.env_intfor upload/archive timeoutsOpen questions
.p8) are the modern path.altoolis being phased out — prefernotarytooland App Store Connect API directly.Definition of done
--dry-runflag for CI sanity checksPart of the v2.0 coverage expansion epic.