Skip to content

Compiler une application hybride avec Gitlab-CI

Sommaire

Introduction

Dans ce TP vous allez mettre en place l’intégration continue sur votre projet d’application hybride. Fini la prise de tête pour la compilation de votre application. Vous allez utiliser « une image Docker » au travers de GitLab-CI. L’image Docker en question est Cordova light.

Pourquoi Light ? Car l’image n’embarque pas Chrome Headless, et ne permet donc pas de faire de tests unitaires de votre application.

Création du projet sur GitLab

Avec votre compte GitLab vous pouvez créer un nombre illimité de projets. La première étape est donc de créer un projet sur votre compte Gitlab.

⚠️ Je vous conseille de mettre votre projet en mode « Private ».

Commiter et Pusher vos sources

Si ce n’est pas déjà fait, commitez les sources de votre application Cordova. Attention à bien mettre un .gitignore pour ignorer le dossier node_modules/.

Vous pouvez pusher vos sources.

Activer GitLab-CI

Maintenant que votre projet est sur GitLab, nous allons activer Gitlab-CI. Pour ça, créez un fichier .gitlab-ci.yml, c’est le fichier qui va activer l’intégration continue sur votre projet. Voilà le contenu du fichier :

yml
image: c4software/cordova-light

stages:
  - deploy

cache:
  untracked: true
  key: "$CI_PROJECT_ID"
  paths:
    - plugins/

android_debug:
  stage: deploy
  when: manual
  script:
    - cordova platform add android
    - cordova build android
  artifacts:
    paths:
      - platforms/android/build/outputs/apk/

Et c’est tout, avec ce simple fichier votre application est prête et sera compilée en automatique.

Commitez et pushez la modification.

  • Regardez le fichier :
    • À quoi correspond le when: manual ?
    • À quoi sert le cache ?
    • À quoi correspond le artifacts ?

Lancement d’un « Build »

Pour lancer un build, rendez-vous dans la partie « CI/CD » de votre projet GitLab.

ci

Et lancez le build :

ci

Au bout de quelques minutes, votre application est prête :

resultat

Bonus !

Grâce à l’artifact, votre application est même téléchargeable :

dl

Test et analyse

Désactivez le « cache » dans le fichier .gitlab-ci.yml. Essayez de compiler plusieurs fois votre application. À votre avis, le cache est-il utile ?

Déclarer un runner GitLab

Comme nous l’avons vu, tout repose sur les runners : de base, Gitlab fournit des runners partagés. Ces runners sont pratiques, car ils sont instantanément disponibles dans vos projets. Cependant, vu qu’ils sont partagés avec d’autres utilisateurs, il peut rapidement y avoir des questions de sécurité et surtout de performances.

Pour être plus autonome (et plus performant), même dans la version cloud, il est possible de déclarer un runner « à nous ». Ce runner va être dédié à votre compte, car il sera déclaré sur votre machine.

Installation

Pour déclarer un runner c’est très simple, il faut juste le lancer / l’installer sur votre machine. La documentation de GitLab étant très bien faite, rendez-vous ici pour Windows et là pour Linux.

Enregistrer le runner

Maintenant que le runner est installé sur votre machine, nous allons devoir l’enregistrer. L’enregistrement consiste à déclarer à Gitlab.com que votre machine est prête à exécuter des tâches. Vous dédiez en quelque sorte un peu de vos ressources à GitLab au travers de votre runner.

L’enregistrement du runner est relativement simple : il faut dans un premier temps aller dans les paramètres CI/CD du projet que vous avez créé (exemple https://gitlab.com/bts-sio-chevrollier/slam5/settings/ci_cd), puis cliquer sur « Expand » de la catégorie « Runners settings ». Vous devez avoir quelque chose comme :

Register Runner

Dans une console administrateur :

sh
./gitlab-runner.exe register

✋ STOP ! Une fois rendu à cette étape, appelez-moi ! Nous allons terminer la procédure ensemble. Pour les plus téméraires, vous pouvez suivre la documentation (attention à bien choisir Docker).

Signer l’application

Faire du Debug c’est bien ! Mais si on faisait une application prête pour le Store ? C’est possible et tout aussi simplement.

⚠️ Je vous déconseille fortement de le faire sur un « runner » public de Gitlab-CI. Pourquoi ? Simplement, car nous allons mettre une clé de signature sur votre APK, clé qui doit rester PRIVÉE ! C’est ce qui garantit la sécurité de votre application : si celle-ci se retrouve en ligne, le jeu est fini pour vous, n’importe qui peut usurper votre identité.

Ajoutez dans le fichier .gitlab-ci.yml :

yml
android:
  stage: deploy
  when: manual
  script:
    - cordova platform add android
    - cordova build android --release -- --keystore="keystore/keyfile" --keystoreType jks --password="MOT_DE_PASSE" --storePassword="MOT_DE_PASSE" --alias="demo"
  artifacts:
    paths:
      - platforms/android/build/outputs/apk/

Comme vous pouvez le constater, la partie script fait référence à un nouveau fichier, le keystore/keyfile. Pour que la commande fonctionne, nous allons donc devoir « le créer ».

Création du keystore

Le Keystore est une notion d’Android, rien à voir avec Cordova. Il faut donc utiliser Android Studio (pour les intéressés, il est également possible de le faire en ligne de commande).

Avec Android Studio :

store

Une fois créé :

sh
git add -A
git commit -am "Ajout signature"
git push

Lancement d’un build

Relancez un build, mais en sélectionnant le stage « android ». Au bout de quelques minutes, vous devriez obtenir une application signée.

×

Reformulation

La reformulation (IA) peut faire des erreurs. Envisagez de vérifier les informations.