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 testAnalysons 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.xcresultDétails importants :
- macos-14 — nous utilisons macOS 14 Sonoma avec Xcode 15.2.
- xcode-select — nous spécifions explicitement la version de Xcode pour éviter les incompatibilités.
- resultBundlePath — nous sauvegardons les résultats des tests comme artefact pour une analyse ultérieure.
Blogs
Book Recommendations
Lire aussi
Code Review PHP : 8 points essentiels à vérifier pour chaque développeur
Surveillance des applications Go : métriques et alertes
Gestion des erreurs en Java : try/catch et bien plus — guide complet
Comment appeler une méthode générique par Type en C# : tutoriel clair
PHP : lire un fichier d'un gigaoctet ligne par ligne sans crash