Guides
How to handle iOS code signing in CI
Signing works locally and fails intermittently in CI.
6 min read
Signing works locally and fails intermittently in CI.
Why it happens
Certificates, provisioning profiles and the keychain all have to be recreated on an ephemeral machine.
How to fix it
- Create a dedicated CI keychain and unlock it explicitly in the job
- Use fastlane match with a read-only role so CI fetches rather than regenerates
- Store the certificate as a base64 secret and import it at job start
- Check profile expiry — annual expiry is the most common sudden failure
Your next build could be twice as fast, at half the price
Start free. Migrating away is the same one line, and we publish that diff too.
Related
How to cut Xcode build times in CIXcode builds take twenty minutes on every run.How to speed up iOS simulator testsSimulator tests take half an hour.How to notarise macOS apps in CINotarisation is slow and occasionally times out.Fixing macOS runner disk exhaustionJobs fail with no space left on device on macOS.