
UE5 → TestFlight Pipeline
UE5 → TestFlight Pipeline
Ship Unreal Engine 5 projects to TestFlight from Windows or Mac, targeting macOS, iOS, and visionOS — entirely from the command line. No Xcode Organizer clicks, no Epic launcher dance, no guessing at signing flags.
This is the workflow I use in production. Every gotcha documented here is one I hit on a real shipping build.
What it does
- Remote cook from Windows — rsync your
.uprojectto a Mac, runRunUAT.command BuildCookRunover SSH, rsync the.appback. Full pipeline scripted. - Mac-native cook — same pipeline collapsed to one machine when you're already on macOS.
- Code-sign for all three Apple platforms — Apple Distribution certificate handling for macOS (
.pkgviaproductbuild), iOS, and visionOS, including embedded provisioning profile placement inside the.app. - Upload to TestFlight via
xcrun altool— App Store Connect API key auth, no password prompts, no Transporter app. - 15 production gotchas documented — UAT silent failures on BP-only projects, embedded
MoltenVK.dylibsigning, visionOS plist keys, theMSYS_NO_PATHCONVGit Bash trap, cwrsync path quirks, and more.
Who it's for
- UE5 devs shipping a real game/app to the Apple ecosystem who are tired of fighting
RunUAT - Windows-primary teams who only have one Mac in the office (or in a closet, or rented from MacStadium)
- Anyone who's ever stared at "EXPORT SUCCEEDED" followed by silence and wondered if the upload actually happened
What you get
- A complete
SKILL.md(~600 lines) covering the full pipeline end-to-end - Working command examples for Windows Git Bash, macOS Terminal, and SSH-bridged hybrid setups
- A platform-comparison table for macOS / iOS / visionOS quirks
- Drop-in shell scripts for each phase (cook, sign, package, upload)
- A debugging section keyed to the actual error strings UAT and
codesignproduce
One-time setup after download
You need an Apple Developer Program membership and an App Store Connect API key. Roughly 15 minutes of clicking the first time, zero clicks every time after.
1. Apple Developer Program
Enroll at developer.apple.com ($99/year). Required for the Apple Distribution certificate.
2. App Store Connect API key
- Go to App Store Connect → Integrations → Keys → Generate API Key
- Role: App Manager (or higher)
- Note the Key ID and Issuer ID
- Download the
.p8file — you cannot re-download it after leaving the page - Save it to
~/.private_keys/AuthKey_<KEY_ID>.p8—altooldiscovers it there automatically
3. Shell environment
Add to ~/.zprofile (Mac) or your Git Bash equivalent (Windows):
export ASC_KEY_ID="ABC123DEFG"
export ASC_ISSUER_ID="69a6de7e-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export ASC_KEY_PATH="$HOME/.private_keys/AuthKey_${ASC_KEY_ID}.p8"
export DEVELOPMENT_TEAM="YOUR10CHARTEAMID"
4. App Store Connect record
Create the app record once in the portal (App Store Connect → My Apps → +). The API returns 403 on create — portal-only. Bundle ID must match your .uproject packaging settings.
5. (Windows only) cwrsync + OpenSSH
Install cwrsync and add it to PATH. Generate an SSH key, copy the public key to your Mac (ssh-copy-id [email protected]), and confirm ssh [email protected] "uname" works without a password prompt.
6. Export compliance plist key
Add to your packaged Info.plist (or [PlatformGame] build config) before archiving:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
Forgetting this blocks the upload at validation time. The skill shows you exactly where UE5 puts this for each platform.
Platform coverage
| Platform | Cook command | Sign target | Upload format |
|---|---|---|---|
| macOS | RunUAT.command BuildCookRun -platform=Mac |
.app + .pkg |
.pkg via altool |
| iOS | RunUAT.command BuildCookRun -platform=IOS |
.ipa |
.ipa via altool |
| visionOS | RunUAT.command BuildCookRun -platform=VisionOS |
.ipa (xros slice) |
.ipa via altool |
Timeline expectations
| Phase | Time |
|---|---|
| First-time setup (certs, keys, ASC record) | ~15 min |
| Cook (mid-size UE5 project, M1 Max) | 8–25 min |
| Sign + package | 30–90 sec |
| Upload to TestFlight | 1–5 min |
| ASC processing → build appears in TestFlight | 5–30 min |
Requires
- A real Mac (rented or owned) — Apple does not allow cross-compilation to their platforms
- UE5.3+ recommended (5.0–5.2 may need minor command tweaks)
- Active Apple Developer Program membership
- App Store Connect API key with App Manager role
This is a workflow skill — it does not include the UE5 engine, Xcode, or any Apple SDKs. Those remain on your machine.
Externe APIs
developer.apple.com · appstoreconnect.apple.com · api.appstoreconnect.apple.com


