25.2 · CI/CD tools, versioning and designing the pipeline
A release should be a button, not a ritual. The pipeline builds the same way every time, signs without a human, versions without a spreadsheet, and promotes one tested artefact instead of rebuilding.
Mental model. Build once, test that build, promote it. Everything environment-specific (secrets, version numbers, endpoints) comes in from outside the code.
The tools
Xcode Cloud, GitHub Actions, Fastlane and the command line underneath all of them.
- What are the main ways to run iOS CI/CD (Xcode Cloud, GitHub Actions, Fastlane, others), and what do they all call underneath?
Every option ends in the same command-line tools, so learn those first. xcodebuild builds and tests (build-for-testing, test-without-building), and releases…
Version numbers
Marketing versions, build numbers and how they are produced.
- How do marketing versions and build numbers work, how should CI generate them, and which rules does App Store Connect enforce?
Two numbers identify a build, and they have different jobs. CFBundleShortVersionString is the marketing version users see (“2.4.0”), three period-separated…
Pipeline design
Hermetic builds, secrets, caching and artefact promotion.
- How do you design a release pipeline: hermetic builds, secrets, caching, artefact promotion and the order of stages?
Design the pipeline around one artefact. A commit triggers a build that produces a signed archive once; the same archive is then tested, uploaded to TestFlight…
More in App Store & release engineering
- 25.1 · Code signing, provisioning and what each file is for
- 25.3 · TestFlight, phased release, App Review and rollback
- 25.4 · Feature flags, remote config and the release train
- 25.5 · Backward-compatible change, deployment targets and device requirements
- 25.6 · Reading profiles and signatures, signing order and API keys
- 25.7 · What a build leaves behind: archives, binaries, dependencies and tests
- 25.8 · Pipelines that lie, build numbers, hotfix branches and rollout statistics