CI/CD pour projets Swift : Guide pas à pas GitHub Actions

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi un CI/CD est-il nécessaire pour les projets Swift ?



Le développement sous iOS et macOS exige une culture du code et une fiabilité élevées. Chaque modification peut casser la build ou entraîner des régressions dans les tests. La vérification manuelle est un processus lent et peu fiable. C'est là que le CI/CD (Continuous Integration / Continuous Deployment) — intégration et livraison continues — vient à la rescousse.



GitHub Actions est un outil puissant et intégré pour automatiser les workflows directement dans votre dépôt. Il permet de builder automatiquement le projet, d'exécuter les tests, d'analyser le code et même de publier l'application sur l'App Store ou TestFlight à chaque push ou création de Pull Request.



Dans cet article, nous allons voir comment configurer un pipeline CI/CD complet pour un projet Swift sur GitHub Actions. Vous apprendrez à créer un workflow, à configurer la build, l'exécution des tests, le linting et le déploiement. Tous les exemples de code sont prêts à l'emploi.



Partie principale



1. Bases de GitHub Actions pour Swift



GitHub Actions fonctionne sur la base de fichiers YAML, qui sont stockés dans le répertoire .github/workflows/. Chaque fichier décrit un ou plusieurs workflows. Pour un projet Swift, nous aurons besoin d'un runner avec macOS, car la build d'applications iOS/macOS n'est possible que sur cette plateforme.



Un workflow de base pour un projet Swift ressemble à ceci :



name: Swift CI

on: push: branches: [ "main" ] pull_request: branches: [ "main" ]

jobs: build-and-test: runs-on: macos-latest

steps: - uses: actions/checkout@v4

- name: Build run: swift build

- name: Run tests run: swift test


Analysons les points clés :

  • on — les déclencheurs : exécution sur push et pull request vers main.
  • runs-on: macos-latest — nous utilisons la dernière version de macOS pour le runner.
  • actions/checkout — l'action standard pour cloner le dépôt.
  • swift build et swift test — les commandes de Swift Package Manager.


Ce pipeline minimal assure déjà une vérification de base. Mais pour une application iOS/macOS réelle, cela ne suffit pas — il faut configurer Xcode, les simulateurs et les dépendances.



2. Configuration de la build et des tests pour une application iOS/macOS



Si votre projet utilise Xcode (par exemple, .xcworkspace ou .xcodeproj), la commande swift build ne convient pas. Utilisez plutôt xcodebuild. Il faut également spécifier le scheme et la destination (par exemple, le simulateur iPhone).



Exemple de workflow pour une application iOS :



name: iOS CI

on: push: branches: [ "develop", "main" ] pull_request: branches: [ "develop", "main" ]

jobs: test: runs-on: macos-14

steps: - uses: actions/checkout@v4

- name: Select Xcode version run: sudo xcode-select -s /Applications/Xcode_15.2.app

- name: Install CocoaPods (si vous utilisez) run: pod install

- name: Build and Test run: | xcodebuild clean test \ -workspace YourApp.xcworkspace \ -scheme "YourApp Scheme" \ -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2' \ -resultBundlePath TestResults env: DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer

- name: Upload test results if: always() uses: actions/upload-artifact@v4 with: name: test-results path: TestResults.xcresult


Détails importants :