CI/CD pour projets Swift : configuration de 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 au CI/CD pour les projets Swift

Le développement moderne d'applications mobiles et de bureau en Swift nécessite non seulement un code de qualité, mais aussi un processus fiable d'intégration et de livraison. CI/CD (Continuous Integration / Continuous Deployment) est une pratique qui permet d'automatiser la compilation, les tests et le déploiement des applications. Pour les projets Swift, en particulier sous iOS et macOS, GitHub Actions est l'un des outils les plus pratiques et populaires.

Dans cet article, nous allons voir comment configurer un pipeline CI/CD complet pour les projets Swift en utilisant GitHub Actions. Vous apprendrez à automatiser la compilation, à exécuter des tests unitaires et même à envoyer l'application sur TestFlight ou le Mac App Store.



Pourquoi GitHub Actions pour Swift ?

GitHub Actions offre des fonctionnalités intégrées pour travailler avec l'écosystème Apple. Contrairement aux services tiers, il est entièrement intégré au dépôt et ne nécessite pas de configuration supplémentaire de plugins. Les principaux avantages :

  • Minutes gratuites pour les dépôts publics (jusqu'à 2000 minutes par mois)
  • Actions prêtes à l'emploi pour Xcode, SwiftLint, CocoaPods et SPM
  • Prise en charge des runners macOS avec Xcode préinstallé
  • Configuration flexible via des fichiers YAML


Configuration de base du CI pour un projet Swift

Commençons par un pipeline simple qui compilera le projet et exécutera les tests à chaque push sur la branche main ou lors de la création d'une Pull Request.

Créez le fichier .github/workflows/swift-ci.yml à la racine du dépôt :

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: Select Xcode version run: sudo xcode-select -s /Applications/Xcode_15.2.app - name: Build run: xcodebuild build -scheme MyApp -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2' | xcpretty - name: Run tests run: xcodebuild test -scheme MyApp -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2' | xcpretty

Ce workflow exécute deux étapes principales : la compilation du projet et l'exécution des tests. Notez l'utilisation de xcpretty — un utilitaire qui formate la sortie de Xcodebuild dans un format lisible.



Vérification supplémentaire de la qualité du code

Ajoutons une analyse statique avec SwiftLint. Cela aidera à maintenir un style de code uniforme dans l'équipe :

jobs:  lint:    runs-on: ubuntu-latest    steps:    - uses: actions/checkout@v4    - name: SwiftLint      uses: norio-nomura/action-swiftlint@3.2.1      with:        args: --strict

Désormais, à chaque commit, la conformité du code aux règles de SwiftLint sera vérifiée. Si des violations sont trouvées, le workflow se terminera par une erreur.



CI/CD avancé : tests et déploiement

Après la configuration de base, on peut passer à des scénarios plus complexes. Considérons un pipeline qui inclut :

  • La compilation pour plusieurs simulateurs
  • Les tests avec couverture de code
  • La publication automatique sur TestFlight (pour iOS) ou le Mac App Store


Compilation et tests avec couverture

Pour collecter les données de couverture des tests, utilisez le flag -enableCodeCoverage YES :

jobs:  test-coverage:    runs-on: macos-latest    steps:    - uses: actions/checkout@v4        - name: Test with coverage      run: |        xcodebuild test \          -scheme MyApp \          -sdk iphonesimulator \          -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2' \          -enableCodeCoverage YES \          -derivedDataPath Build/DerivedData | xcpretty        - name: Upload coverage to Codecov      uses: codecov/cod                

Blogs

Book Recommendations