Livraison continue pour Android en utilisant Fastlane et GitHub Actions
Prérequis
Avant de poursuivre le tutoriel…
- Assurez-vous d’utiliser GitHub
- Votre application est déjà déployée sur le Google Play Store
- Envie de lire 😆…
Important concernant le prix
https://githubcom/features/actions
Le service est « gratuit » jusqu’à la limite, selon la machine choisie Nous allons utiliser une machine Linux, vous pouvez voir sur la capture d’écran son prix et ses limites (prix à la date de création du tutoriel, ils pourraient subir des changements à l’avenir)
🔴 Une fois avertis des exigences et des prix, si vous le souhaitez, nous continuons
📣 Dans cet article, nous supposons que nous avons l’application créée sur Google Play, nous avons la clé de signature de l’écosystème Google
Passons aux choses sérieuses 🧑🏽💻
Étapes à suivre dans l’article
- Copier les fichiers Fastlane
- Stocker vos secrets dans les secrets cryptés de GitHub
- Créer et stocker votre clé de compte de service Google Play
- Stocker votre clé de signature Android
- Configurer votre fichier de workflow GitHub Actions yml
1. Copier les fichiers Fastlane
Fastlane est une bibliothèque Ruby créée pour automatiser les tâches courantes de développement mobile. En utilisant Fastlane, vous pouvez configurer des « lanes » personnalisées qui regroupent une série d’« actions » effectuant des tâches que vous effectueriez normalement à l’aide d’Android Studio. Vous pouvez faire beaucoup avec Fastlane, mais pour les besoins de ce tutoriel, nous n’utiliserons qu’une poignée d’actions de base.
Créez un dossier Fastlane à la racine de votre projet et copiez les fichiers suivants : Fastlane
Stocker vos secrets dans les secrets cryptés de GitHub
Pour s’authentifier auprès de l’API Google Play Developer, nous aurons besoin d’une clé de compte de service. Le fichier de clé de compte de service est considéré comme sensible, ce qui signifie que nous devrons le stocker en toute sécurité, mais dans un endroit où il peut être accessible par nos workflows GitHub Actions et notre Fastfile lorsque nécessaire. Entrez les secrets cryptés de GitHub : nous stockerons toutes nos clés sensibles dans les secrets du dépôt, les conservant en sécurité tout en les rendant automatiquement accessibles aux workflows GitHub Actions dans le dépôt.
Créer et stocker votre clé de compte de service Google Play
Si vous devez créer une nouvelle clé de compte de service, suivez les étapes décrites ici. Une fois que vous avez votre fichier JSON de clé de compte de service, ajoutons-le aux secrets cryptés de votre dépôt GitHub.
Pour ajouter un nouveau secret aux secrets cryptés de GitHub, naviguez d’abord vers le dépôt Android auquel vous ajouterez le workflow GitHub Actions. Sur la droite, cliquez sur “Settings”.
Ensuite, cliquez sur “Secrets”,
puis “Actions” dans la liste du menu de gauche.
Ce sont les variables d’environnement secrètes cryptées pour le dépôt. Tous les workflows configurés sur le dépôt auront accès à ces secrets du dépôt.
À partir de là, cliquez sur “New repository secret” pour ajouter un nouveau secret :
Lorsque vous cliquez sur “New repository secret”, vous verrez un formulaire qui vous demandera d’entrer un nom pour votre nouveau secret, et sa valeur.
Les secrets GitHub n’acceptent que des valeurs de type chaîne, donc pour certaines informations d’identification (tous les fichiers jks ou json par exemple), vous devrez d’abord convertir le fichier en une chaîne encodée en base64 avant de l’ajouter aux secrets GitHub. Vous pouvez le faire depuis la ligne de commande :
Cela copie la chaîne résultante dans votre presse-papiers, vous pouvez donc la coller directement dans un nouveau secret de dépôt sur GitHub.Voici la traduction en français :
Par exemple :
Créons un nouveau secret de dépôt comme suit :
- PLAY_CONFIG_JSON : la clé JSON du compte de service encodée en base64
Veuillez noter que vous devez stocker une copie de sauvegarde de vos secrets en lieu sûr (ailleurs que dans les secrets chiffrés de GitHub), car vous ne pourrez plus exporter ou accéder aux identifiants depuis GitHub après les avoir ajoutés
Avec notre clé de compte de service ajoutée aux secrets du dépôt GitHub, nous pouvons maintenant nous authentifier auprès de l’API Google Play Developer depuis n’importe quel workflow GitHub Actions ajouté au dépôt
Stocker votre clé de signature Android
Pour correctement signer les builds Android de production en CI, le workflow aura besoin d’accéder soit à une clé de téléchargement Android, soit à une clé de signature d’application. Les applications créées après août 2021 utiliseront par défaut le nouveau système Play App Signing de Google, dans lequel une clé de téléchargement gérée par l’utilisateur est utilisée pour signer les AAB avant le téléchargement, mais la clé de signature de l’application est gérée par Google. Si votre équipe utilise Play App Signing de Google, alors vous n’aurez besoin que de la clé de téléchargement de votre application pour le pipeline CI, car la signature est différée jusqu’après que l’AAB ait été téléchargé sur la Play Console. Si vous devez encore créer une clé de téléchargement et un keystore, suivez les instructions trouvées dans la documentation pour développeurs Android.
Si votre équipe n’a pas encore migré vers le système Play App Signing de Google, vous devrez alors rendre votre clé de signature d’application disponible pour le workflow CI afin de signer correctement votre application avant le téléchargement.
Ajoutez les éléments suivants en tant que secrets du dépôt :
- ANDROID_KEYSTORE_FILE : le fichier
jks
oukeystore
encodé en base64 utilisé pour signer vos builds Android. Il s’agira soit du fichier keystore associé à votre clé de téléchargement (si vous utilisez Play App Signing), soit de votre clé de signature d’application. - KEYSTORE_KEY_PASSWORD : le mot de passe associé au fichier keystore
- KEYSTORE_KEY_ALIAS : l’alias du keystore
- KEYSTORE_STORE_PASSWORD : le mot de passe de la clé privée
- DEVELOPER_PACKAGE_NAME : l’ID de votre application Android comme comexampleapp
Avec ces secrets ajoutés aux secrets du dépôt GitHub, nous sommes prêts à configurer notre workflow GitHub Actions pour exécuter nos builds.
Configurer votre fichier yml de workflow GitHub Actions
Maintenant, configurons notre fichier yml de workflow GitHub Actions pour Android - il définira les étapes que nous exécuterons dans le cadre de notre workflow. Dans ces étapes, nous appellerons nos lanes Fastlane.
Tout d’abord, créons les dossiers nécessaires. Depuis le répertoire racine de votre projet, exécutez :
Ensuite, collez le code suivant dans votre fichier build-upload-androidyml
nouvellement créé :
Ce workflow devrait être déclenché après chaque tag GitHub, si vous avez besoin d’automatiser le tag, veuillez vous référer à Construction et publication automatiques avec GitHub actions
Ensuite, ce workflow récupérera vos dépendances Nodejs, les installera et construira votre application JavaScript.
Votre application n’a pas besoin d’utiliser Ionic, seule la base Capacitor est obligatoire, elle peut avoir d’anciens modules Cordova, mais les plugins JS Capacitor devraient être préférés.
Chaque fois que vous envoyez un nouveau commit, une version sera construite dans la console Google Play, canal bêta.
J’améliorerai ce blog avec vos commentaires, si vous avez des questions ou des suggestions, n’hésitez pas à me le faire savoir par email martin@capgoapp
Traitement des builds
Dans GitHub Actions, vous êtes facturé en fonction des minutes que vous avez utilisées pour exécuter votre workflow CI/CD. D’après l’expérience, il faut environ 3 à 5 minutes avant qu’un build puisse être traité dans le Google Play Store.
Pour les projets privés, le coût estimé par build peut aller jusqu’à 0,008 $/min x 5 min = 0,04 $4, ou plus, selon la configuration ou les dépendances de votre projet
Pour les projets open-source, cela ne devrait pas du tout poser problème. Voir tarification
Merci
Ce blog est basé sur les articles suivants :
- Automatiser la publication d’applications sur le Google Play Store avec GitHub Actions⚡+ Fastlane🏃
- Mise en place de CI/CD pour un projet Android (Partie 3 - GitHub Actions)
- Intégration continue Android avec Fastlane et CircleCI 20 — Partie III
- Comment mettre en place un pipeline CI/CD pour votre application Android en utilisant Fastlane et GitHub Actions
- Documentation Fastlane
- Ce message GitHub de @mrogunlana