Browse Questions
Answer: CI/CD automates building, testing, and distributing your app on every code push. Popular options are Xcode Cloud, GitHub Actions, and Bitrise.
GitHub Actions example — .github/workflows/ios.yml:
name: iOS CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: macos-14
steps:
- uses: actions/checkout@v3
- name: Select Xcode
run: sudo xcode-select -switch /Applications/Xcode_15.2.app
- name: Install dependencies
run: xcodebuild -resolvePackageDependencies
- name: Run tests
run: |
xcodebuild test \
-scheme MyApp \
-destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2' \
-resultBundlePath TestResults \
| xcpretty
- name: Upload test results
uses: actions/upload-artifact@v3
with:
name: TestResults
path: TestResults.xcresult
Typical pipeline stages:
- Install dependencies (SPM)
- Run unit tests
- Run UI tests
- Build archive
- Upload to TestFlight (for
mainbranch merges)