Aller au contenu principal

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.

Code source complet

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 pipelines
  • Makefile — Commandes de build/deploy (local + CI)
  • scripts/asc.rb — Client API App Store Connect (Ruby)
  • ios/ci_scripts/ — Scripts Xcode Cloud
Flutter : 4h

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

PlateformeOutil de buildDistributionDéploiement
AndroidFlutter + GradleGoogle Play Storefastlane supply dans le conteneur Bitbucket
iOSXcode CloudTestFlightTrigger 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 :

  1. Un compte développeur Google Play avec une app créée
  2. Un compte Apple Developer Program (pour Xcode Cloud + App Store Connect)
  3. Un dépôt Bitbucket avec les Pipelines activés
  4. 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.