How to Set Up Unity Build Automation for iOS
.p12) and matching App Store profile, create an iOS build target and attach the credential. Build Automation signs with what you give it — it doesn't create certificates, and it has no one-click TestFlight delivery.Unity Build Automation (part of Unity DevOps) builds iOS projects on Unity's cloud Macs, so you never need Apple hardware. Setup is mostly dashboard work — here's the order that avoids backtracking.
Step 1 — Link the project to Unity Cloud
In the Unity Editor open Project Settings → Services and create or select a cloud project. This produces your Organisation ID and Project ID, which every later step references.
Step 2 — Connect source control (the manual step)
In the Unity Cloud dashboard, open Build Automation → Config → Source Control and connect your Git repository.
Be aware: this step is dashboard-only. Unity provides no API that reliably attaches a repository to a build target, so it can't be fully scripted. Any tool claiming end-to-end automation on this backend still needs you to click through this once.
Step 3 — Upload signing credentials
Under the iOS credentials section, upload:
- Your distribution certificate as a
.p12(certificate + private key), with its password. - A matching App Store provisioning profile.
Two gotchas worth knowing before you upload:
- Build Automation classifies certificates by naming convention. A modern "Apple Distribution" certificate can be flagged as non-distribution, causing signed builds to be rejected by Apple with
ITMS-90035. An "iOS Distribution" certificate avoids this. - The profile must embed the same certificate you upload. Mismatched pairs fail confusingly at signing time.
Step 4 — Create the iOS build target
Create a target for iOS, choose the branch and Unity version, and attach the credential from step 3. If your Unity project lives in a subfolder of the repository, set the project path explicitly.
Step 5 — Deliver to TestFlight
Build Automation produces a signed IPA but has no built-in TestFlight toggle. To deliver, add a post-build script that uploads the IPA to App Store Connect using an API key (.p8 + Key ID + Issuer ID), stored as environment variables on the build target.
Remember that every upload needs a unique, increasing build number, or App Store Connect rejects it as a redundant binary.
What Build Automation does and doesn't do
| Task | Handled? |
|---|---|
| Provide a cloud Mac | Yes |
| Manage Unity versions/licensing | Yes |
| Sign your build | Yes — with credentials you supply |
| Create certificates/profiles | No |
| Connect your repo automatically | No — manual dashboard step |
| Upload to TestFlight | No — needs a post-build script |
Closing the gaps
The three "No" rows above are where most setup time goes. MacFree fills them from inside the Unity Editor: it creates the distribution certificate and App Store profile through Apple's API, uploads them as a Build Automation credential, configures the build target, and installs the TestFlight upload step — so the only thing left for you is the one repository connection Unity requires by hand.
Use Build Automation without the setup
MacFree creates the signing material, wires the build target and delivers to TestFlight.
Get MacFree on the Unity Asset Store →Frequently asked questions
Does Unity Build Automation handle iOS code signing?
It signs your build using credentials you upload, but does not create them. You must supply an iOS distribution certificate as a .p12 with its password and a matching App Store provisioning profile.
Can Unity Build Automation upload directly to TestFlight?
It produces the signed IPA but has no built-in TestFlight delivery toggle. Uploading requires a post-build step that sends the IPA to App Store Connect using an API key, or a tool that adds this step for you.
Do I need a Mac to use Unity Build Automation for iOS?
No. It compiles iOS projects on Unity's own cloud macOS machines, so you can configure and trigger everything from Windows or Linux.