Déployer automatiquement une app Flutter
Ce cookbook explique comment déployer automatiquement une application Flutter sur Android et iOS grâce à Bitbucket Pipelines, Fastlane et Xcode Cloud.
L'objectif : un seul clic dans Bitbucket pour déclencher un déploiement vers le Google Play Store ou TestFlight.
Les extraits présents dans ce cookbook sont issus de la configuration réelle du projet Starter. Les fichiers de référence :
bitbucket-pipelines.yml— Définition des pipelinesMakefile— Commandes de build/deploy (local + CI)scripts/asc.rb— Client API App Store Connect (Ruby)ios/ci_scripts/— Scripts Xcode Cloud
TL;DR
Des custom pipelines Bitbucket déclenchent manuellement les déploiements. Android est buildé et uploadé directement dans le conteneur CI via Fastlane (build number auto-incrémenté depuis le Play Store). iOS est délégué à Xcode Cloud (Apple) via l'API App Store Connect (build number auto-incrémenté par Xcode Cloud).
Architecture globale
| Plateforme | Outil de build | Distribution | Déploiement |
|---|---|---|---|
| Android | Flutter + Gradle | Google Play Store | fastlane supply dans le conteneur Bitbucket |
| iOS | Xcode Cloud | TestFlight | Trigger API ASC depuis Bitbucket (pas de macOS dans le pipeline) |
Tous les pipelines sont manuels (custom pipelines) — lancés à la demande depuis Bitbucket. Les tests sont automatiques sur chaque Pull Request.
bitbucket-pipelines.yml ← Définition des pipelines
Makefile ← Commandes de build/deploy (local + CI)
scripts/asc.rb ← Client API App Store Connect (Ruby)
ios/ci_scripts/
└── ci_post_clone.sh ← Xcode Cloud : installe Flutter + CocoaPods
Diagrammes de flux
Android (build + upload dans le pipeline)
iOS (délégation à Xcode Cloud)
Pré-requis
Avant d'implémenter les pipelines, tu dois disposer de :
- Un compte développeur Google Play avec une app créée
- Un compte Apple Developer Program (pour Xcode Cloud + App Store Connect)
- Un dépôt Bitbucket avec les Pipelines activés
- Une app Flutter configurée avec des flavors (
preprod/prod)
Pour la configuration initiale des secrets et comptes, consulte la page Flutter.
Flux de déploiement recommandé
Ordre recommandé
1. deploy-android-preprod (≈10 min)
2. deploy-ios-preprod (≈5 min Bitbucket + ≈8 min Xcode Cloud)
FAQ
Pourquoi des custom pipelines manuels et pas des triggers automatiques ?
Pour garder le contrôle sur le moment du déploiement. Les tests automatiques tournent sur chaque PR, mais le déploiement sur les stores est déclenché volontairement après validation.
Pourquoi Xcode Cloud pour iOS au lieu d'un runner macOS ?
Bitbucket Pipelines n'offre pas de runners macOS. Xcode Cloud est inclus gratuitement dans l'Apple Developer Program (25h/mois) et gère le build, la signature et l'upload vers TestFlight.
Peut-on déployer directement en production ?
Oui, les pipelines deploy-*-prod existent. Pour Android, il suffit de passer ANDROID_TRACK=production. Pour iOS, un workflow Xcode Cloud séparé pointe vers le scheme prod.
Quelle image Docker est utilisée ?
ghcr.io/cirruslabs/flutter:3.38.9 — contient Flutter, Dart, Android SDK, Ruby et les outils de base.