Développer une CI/CD Flutter sous Firebase

  • posté le
  • par ESENS

Flutter est un framework développé par Google qui permet de concevoir des applications Android, iOS et des sites web à partir d'une seule base de code. Si vous découvrez Flutter, n'hésitez pas à consulter notre article Flutter : A Song of iOS and Android en guise d'introduction. Aujourd'hui, cependant, nous allons voir comment développer une CI/CD Flutter sous Firebase.

Mais c'est quoi une CI/CD ? CI/CD, l'acronyme de continuous integration/continuous delivery, est le concept permettant d'automatiser toutes les étapes de développement.

Dans notre cas, nous voulons pousser notre code sur notre repository et qu'une suite d'étapes se déclenchent en suivant ces étapes :

Si une des étapes échoue, nous devons être alertés pour pouvoir apporter les corrections nécessaires. Plusieurs outils permettent de créer une CI/CD fonctionnelle :

  • GitLab CI
  • Jenkins X
  • Codemagic
  • Travis CI
  • ...

Pré-requis pour cet article

Pour avoir une CI/CD fonctionnelle nous aurons besoin 

  • d'une application Flutter (qui compile en local de préférence)
  • d'un compte Firebase - pour le dépôt des applications
  • d'un téléphone Android 
  • d'un iPhone
  • ATTENTION : IL EST OBLIGATOIRE D'AVOIR UN MAC POUR LA COMPILATION iOS

Etape 1 : Lancement des tests

Dans cette première étape, nous allons exécuter les tests unitaires de notre application Flutter.

L’étape de lancement des tests concerne uniquement les tests unitaires de Flutter (Dart) et ne lance pas de test spécifique Android ou iOS. Tous les tests unitaires sont regroupés dans le dossier "test" à la racine du projet. 

L'étape des tests s’exécute en utilisant cette commande :

Bash

On peut lancer des tests unitaires avec un fichier spécifique :

Bash

Etape 2 : Lancement des compilations

Dans cette seconde étape, nous allons compiler notre application Flutter. La compilation d'une application Flutter est différente entre Android et iOS.

Compilation Android nous avons deux possibilités :

  • Générer un fichier .apk qui est en réalité un dossier compressé avec tous les fichiers buildés de l'application Android.
  • Générer un fichier .aab, Un fichier .aab ce nomme un AppBundle qui est un format de publication. Google utilise un AppBundle pour générer et diffuser des fichiers APK optimisés en fonction du téléphone de l'utilisateur.

Android - Génération d'une APK

Bash


L'APK généré sera dans le dossier projet/app/outputs/apk/release/

Android - Génération d'une App Bundle (incompatible avec Firebase)

Bash

Le bundle généré sera dans le dossier projet/app/outputs/bundle/release

Compilation iOS

iOS - Génération d'une IPA

Bash

Note : à la fin de la compilation Flutter iOS nous devons convertir le .app en .ipa

Actuce : On peut nommer nos versions pour avoir un meilleur rendu en utilisant ces paramètres :

  • build-number=1.0.10
  • build-name=1.0.10

ex : 

  • flutter build ios --build-name=1.0.10 --build-number=1.0.10
  • flutter build apk --build-name=1.0.10 --build-number=1.0.10

Seul les numéros, les points et les tirets sont acceptés pour les versions iOS


Etape 3 : Déploiement sur Firebase

Dans cette dernière étape, nous allons exécuter déployer notre application Flutter

Pour cet article nous utiliserons Firebase pour le déploiement de l'application. Firebase est une plateforme regroupant un ensemble de services, dont la possibilité de stocker/déployer des applications mobiles (Android et iOS). Le principe est simple à la fin de la compilation du projet Flutter, une APK ou IPA sera générée puis déposée dans Firebase (au niveau du service App Distribution de Firebase cf). 

Android - Déploiement d'une APK via l'interface graphique

Android - Déploiement d'une APK

Bash

iOS- Déploiement d'une IPA

Bash

Vous devez remplacer les variables des commandes précédentes par ces valeurs :

APP_ID_FIREBASE_ANDROID : ID de l'application (Attention il faut avoir créé une Application Android sur Firebase pour récupérer son ID de l'application)

FIREBASE_TOKEN : Token généré via CLI

Par la suite un email sera envoyé pour tester votre application


Cliquer sur "Get Setup" puis suivez la procédure pour pouvoir installer "App tester". App Tester est une application pour télécharger les différentes versions de votre application Flutter qui sont déposées dans l'App distribution de Firebase et dont vous avez l'autorisation pour la télécharger.


Il suffit maintenant de choisir votre version et de cliquer sur "Download".

Exemple d'une CI/CD dans GitLab

Nous avons développer une CI/CD en utilisant GitLab, retrouvez notre code en open source sur GitHub.

Plusieurs choix s'offrent à vous dans cet exemple :

  • Vous pourrez faire une CI/CD seulement pour Android
  • Vous pourrez faire une CI/CD pour Android et iOS

Dans notre exemple nous n'avons pas utilisé Fastlane qui offre davantage de fonctionnalités.

Fastlane est un outil permettant de gérer le déploiement des applications mobiles (Android et iOS), il est compatible avec le Play Store, Firebase et App Store. Il gère toutes les tâches fastidieuses, comme la génération de captures d'écran, la signature de code et la publication de votre application.

------------------------------

Article rédigé par Steven, Lead Dev Full Stack chez ESENS | Retrouvez tous nos articles sur le Blog ESENS

Vous êtes à la recherche d'un nouveau challenge ? Rejoignez l'équipe ESENS en postulant à nos offres d'emploi !

PARTAGER CET ARTICLE