O U I C O D I N G

Chers développeurs, Dans cet article je vais vous présenter comment automatiser l’exécution des test et le build de votre application Android tout en utilisant la nouvelle fonctionnalité de github : “GitHubAction”

Mais d’abord, on doit connaitre c’est quoi “l’intégration continue”, “le déploiement continu”, et le “GitHub Actions

Certainement, vous avez entendu parler de l’intégration et du déploiement continues. Ce sont deux “fonctionnalités” qui concernent un sujet plus large qui est le DevOps.


Selon Wikipedia, l’intégration continue, dite aussi CI, est “ un ensemble de pratiques utilisées en génie logiciel consistant à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression dans l’application développée. Le concept a pour la première fois été mentionné par Grady Booch1 et se réfère généralement à la pratique de l’extreme programming. Le principal but de cette pratique est de détecter les problèmes d’intégration au plus tôt lors du développement. De plus, elle permet d’automatiser l’exécution des suites de tests et de voir l’évolution du développement du logiciel.

La figure suivante résume les fonctionnalités de l’intégration continue.

Image for post

Image for post

Par contre, le déploiement continue, ou CD est “une stratégie de développement logiciel où toute validation de code qui réussit le cycle de test automatisé est automatiquement transférée dans l’environnement de production, propulsant ainsi les modifications vers les utilisateurs du logiciel”. Selon LeMagIT.

Image for post

Image for post

Donc, les CI/CD aident essentiellement à réaliser le projet plus rapidement en automatisant le “build”, le test et le “release”. Tout comme le montre la figure ci-dessous.

Image for post

Image for post

Et pour que les développeur puissent automatiser tout ça, ils utilisent souvent des outils tels que Jenkins, Travis CI, CircleCI… Et dernièrement, le nouveau né de GitHub qui s’appelle GitHub Actions.

GitHub Actions

On peut le présenter comme l’usine de production de Oreo, ou on trouve une chaine d’assemblage qui passe par plusieurs machines en créant les biscuis, ajoutant du chocolat, de la crème… afin d’avoir le paquet bien emballé de pièces d’Oreo.
Dans notre cas, et pour un projet Android, le chocolat et la crème sont les test et le build. Et le biscuit emballé est le livrable qui est le fichier APK.

Alors, passons maintenant au travail. Et bien évidemment, vous avez besoin d’avoir un compte sur GitHub.

Après avoir choisi votre repo sur GitHub, cliquez sur le menu Actions en haut.

Image for post

Image for post

GitHub Actions vous donne la possibilité d’installer facilement CI/CD sur votre projet, et il te crée donc le fichier “.github/workflows/android.yml”

Image for post

Image for post

Comme mentionné dans le fichier android.yml, à chaque “push”, GitHub Actions lance automatiquement le build de votre projet en utilisant la dernière version d’ubuntu.
On va donc modifier ce fichier afin d‘automatiser les tests unitaires et la génération d’un APK pour chaque push sur le repo.

Tests Unitaires

Le bout de code suivant va lancer à chaque push sur la branche master, les tests unitaires avec la commande “bash ./gradlew test — stacktrace”

name: Android CI/CDon:
push:
branches:
- 'master'
jobs:
test:
name: Run Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: set up JDK 1.8
uses: actions/[email protected]
with:
java-version: 1.8
- name: Unit tests
run: bash ./gradlew test --stacktrace

Génération de l’APK

On a terminé avec les tests unitaires, et nous abordons maintenant la génération du livrable d’un projet Android, l’APK.
On ajoute dans la sections jobs le code ci-dessous, qui génére le fichier APK “app-debug.apk” et le place dans “app/build/outputs/apk/debug”. Et tout comme les tests unitaires, ce traitement est fait sur la dernière version d’ubuntu et en utilisant Java 8.


apk:
name: Generate APK
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: set up JDK 1.8
uses: actions/[email protected]
with:
java-version: 1.8
- name: Build debug APK
run: bash ./gradlew assembleDebug --stacktrace
- name: Upload APK
uses: actions/[email protected]
with:
name: app
path: app/build/outputs/apk/debug/app-debug.apk

Et au final, notre “android.yml” sera comme suit :


Et maintenant, c’est le time pour tester ce qu’on a fait précedemment.


Une fois on fait le push d’un nouveau commit, soit par l’invite de commande ou les outils de Android Studio, notre chaine de production des biscuits Oreo commence son travail:

Image for post

Image for post

Image for post

Image for post

Il suffit d’aller à “Actions” dans votre repository pour visualiser les étapes de test et de géneration..

Image for post

Image for post

Image for post

Image for post

Image for post

Image for post

Le build du fichier apk:

Image for post

Image for post

Image for post

Image for post

Et à la fin, le GitHub Actions nous indique que l’execution des tests unitaires ainsi que la géneration de l’apk sont fait avec succès.

Image for post

Image for post

Et on peut trouver et télécharger notre fichier apk généré, c’est à partir de “Artifacts” en haut à droite.

Image for post

Image for post


PS: Si vous vous trouvez devant une erreur qui ressemble à celle ci :

Image for post

Image for post

Il suffit donc de modifier, dans le fichier Android.yml, les lignes “runs-on: ubuntu-latest” par “ runs-on: windows-latest”


Et voila, on termine avec cette première partie du tutorial.

Des questions ? Des remarques ?… A vos claivers alors 😀

Par Jean Marc Lahaye le 03 juin 2019

Articles Similaires

OUIcoding facilite, permet, promeut et célèbre l’innovation !

Nous suivre

Email: [email protected]
Tél: +33 1 84 19 03 47 
Tél: +33 6 58 26 23 59