Xcode ToolsMidOpen-ended

How do you set up CI/CD for an iOS project?

Explanation & Code

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:

  1. Install dependencies (SPM)
  2. Run unit tests
  3. Run UI tests
  4. Build archive
  5. Upload to TestFlight (for main branch merges)

Rate your understanding:

Ready to practice more Xcode Tools?

Test yourself with our interactive quiz mode or browse all curated questions for this topic.