This is the GitHub Actions pipeline, signing scripts, and notes I used to build and submit an actual App Store app — using GitHub's free build servers and a web browser. Nothing else.
$ git push origin main → GitHub spins up a macOS build machine (free, public repo) → signs the app, archives it, exports a .ipa → uploads to TestFlight done. no Mac involved, nothing spent.
Normally, shipping an iOS app means owning a Mac (starting around $799) or renting one in the cloud (usually $20–100+ a month) just to run Xcode long enough to sign and upload a build. This replaces that with a GitHub Actions workflow that does the same steps — for free, because GitHub doesn't charge for macOS runners on public repositories.
.ipa.Not just a workflow file you copy and hope works. The whole setup, written up the way I wish it existed before I had to figure it out myself.
This is the exact pipeline behind Citolex — a full app with native Swift plugins that went from "is this even possible" to submitted for App Store review, without a single Mac. Every fix in the troubleshooting doc is one this pipeline actually needed. → citolex.com
No Mac to build or sign. You'll still want an iPhone to actually test the finished app — TestFlight installs directly on a physical device.
No. You're using GitHub's own free macOS minutes to build your own app, on your own repo, under your own Apple Developer account — exactly what they're for. This isn't reselling compute or running anyone else's builds.
Yes — the $99/year Apple Developer Program fee is separate and unavoidable. This removes the Mac requirement, not Apple's own fee.
The signing and CI steps work no matter what generates your iOS project — Capacitor is just what my example app used. The guide covers plain Xcode projects too.
Private repos work exactly the same way — nothing about the pipeline changes. The only difference is GitHub's free-minutes allowance: public repos get unlimited free macOS build minutes, private repos get a monthly allowance before you're billed per minute past it (still usually cheaper than a rented Mac). Either way, your signing certificates and credentials are stored as encrypted GitHub secrets — they're never exposed in your repo or build logs, public or private.
Email me. The troubleshooting doc covers the errors this pipeline has actually produced, and if you can't get a build out within 30 days, I'll refund you.