CI/CD für Swift-Projekte: GitHub Actions von A bis Z

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in CI/CD für Swift-Projekte

\n

Die moderne Entwicklung mobiler und Desktop-Anwendungen in Swift erfordert nicht nur qualitativ hochwertigen Code, sondern auch einen zuverlässigen Prozess für die Integration und Auslieferung von Änderungen. Continuous Integration (CI) und Continuous Delivery (CD) sind Praktiken, die die Automatisierung von Build, Test und Deployment von Anwendungen ermöglichen. GitHub Actions ist ein integriertes Tool von GitHub, das sich ideal für Swift-Projekte eignet, die auf iOS und macOS laufen.

\n

In diesem Artikel werden wir den gesamten Zyklus der CI/CD-Einrichtung für Swift durchgehen: von der Basiskonfiguration bis zum Deployment im App Store und TestFlight. Sie erfahren, wie Sie die Entwicklung beschleunigen, den „menschlichen Faktor“ vermeiden und die Stabilität Ihrer Anwendung sicherstellen können.

\n\n

Hauptkomponenten von CI/CD für Swift

\n

Bevor wir mit der Einrichtung beginnen, ist es wichtig zu verstehen, aus welchen Phasen die Pipeline für Swift-Projekte besteht:

\n
    \n
  • Build — Kompilierung des Projekts mit Xcode oder xcodebuild.
  • \n
  • Test — Ausführung von Unit-Tests und UI-Tests.
  • \n
  • Linting — Überprüfung des Codestils (z. B. mit SwiftLint).
  • \n
  • Archivierung (Archive) — Erstellung einer .ipa- oder .app-Datei für das Deployment.
  • \n
  • Deployment (Deploy) — Versand des Builds an TestFlight oder den App Store.
  • \n
\n

GitHub Actions ermöglicht es, all diese Schritte in einer einzigen YAML-Datei zu vereinen, die im Repository gespeichert wird.

\n\n

Einrichtung von GitHub Actions für Swift: Schritt-für-Schritt-Anleitung

\n\n

1. Erstellen der Workflow-Datei

\n

Erstellen Sie im Stammverzeichnis des Repositorys den Ordner .github/workflows und fügen Sie die Datei ci.yml hinzu:

\n
name: Swift CI/CD\n\non:\n  push:\n    branches: [ main, develop ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build-and-test:\n    runs-on: macos-latest\n\n    steps:\n    - uses: actions/checkout@v4\n\n    - name: Select Xcode version\n      run: sudo xcode-select -s /Applications/Xcode_15.0.app/Contents/Developer\n\n    - name: Build and test\n      run: |\n        xcodebuild clean test \\\n          -project YourApp.xcodeproj \\\n          -scheme YourApp \\\n          -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.0' \\\n          -resultBundlePath TestResults \\\n          CODE_SIGNING_ALLOWED=NO\n    - name: Upload test results\n      uses: actions/upload-artifact@v4\n      with:\n        name: test-results\n        path: TestResults.xcresult
\n

Dieser Workflow wird bei jedem Push in main und develop sowie bei Pull Requests ausgelöst. Er führt einen sauberen Build durch und führt alle Tests auf dem iPhone 15 Simulator mit iOS 17 aus.

\n\n

2. Hinzufügen von Linting und statischer Analyse

\n

Um einen einheitlichen Codestil zu gewährleisten, fügen Sie einen Schritt mit SwiftLint hinzu:

\n
- name: Run SwiftLint\n  run: |\n    brew install swiftlint\n    swiftlint --strict
\n

Wenn Sie SPM (Swift Package Manager) verwenden, können Sie eine statische Analyse mit swift analyze (verfügbar in Swift 5.9+) hinzufügen:

\n
- name: Static analysis\n  run: swift analyze --strict
\n\n

3. Einrichtung von CD: Deployment in TestFlight

\n

Für die automatische Auslieferung von Builds an TestFlight werden Zertifikate und Signierprofile benötigt. Der sicherste Weg ist die Verwendung von GitHub Secrets zur Speicherung der Schlüssel:

\n
jobs:\n  deploy:\n    needs: build-and-test\n    runs-on: macos-latest\n    if: github.ref == 'refs/heads/main'\n\n    steps:\n    - uses: actions/checkout@v4\n\n    - name: Install provisioning profile\n      env:\n        PROVISIONING_PROFILE: ${{ secrets.PROVISIONING_PROFILE_BASE64 }}\n      run: |\n        echo "$PROVISIONING_PROFILE" | base64 --decode > ~/Library/MobileDevice/Provisioning\\ Profiles/profile.mobileprovision\n\n    - name: Build and archive\n      run: |\n        xcodebuild archive \\\n          -project YourApp.xcodeproj \\\n          -scheme YourApp \\\n          -archivePath $                

Blogs

Buchempfehlungen