Une CI avec Temporal

Une CI avec Temporal

Alexandre P. dans News - Le 18-02-2024

Temporal est un orchestrateur de process, c'est à dire que tel un maestro il va distribuer les tâches à des workers et vos étapes seront jouées les unes après les autres avec des logs d'entrée sortie, gestion des retries automatiques et tout cela livré avec une interface pour tout superviser !

Dernièrement, je vous parlais d'un petit projet que j'ai réalisé pour un expert comptable , afin de permettre la conversion de relevés bancaire en un format Excel spécifique à Coala (logiciel comptable maintenant renommé en Sage Génération Expert).

J'ai décidé de partir sur une application client side avec Electron, et comme vous vous en doutez, les collaborateurs d'un expert comptable travaillent sous Windows, ce qui implique une compilation dédiée pour leur OS.

La première version que j'ai compilée a été faite sur un ordinateur portable que je garde sous Windows pour ce genre de besoin. Mais lorsqu'il s'agit de faire évoluer cette application. Cela signifie que je vais devoir régulièrement aller sur cette machine, faire un pull du projet, recompiler les sources, compresser et distribuer. Waouw, c'est long !

D'ordinaire je me sers de cette machine pour des déplacements sur site afin d'intervenir avec des outils Windows. Mais de devoir le faire à chaque itération de développement (parfois 20 par jour), c'est beaucoup plus fastidieux.

C'est pourquoi j'ai opté pour une approche CI depuis une machine virtuelle. J'ai créé une VM Windows sur un Proxmox (OS de machine virtuel dont on parlera prochainement) et cela me permet d'avoir un Windows accessible de partout sur lequel je vais mettre en place tout un process de compilation et de distribution.

Aujourd'hui nous allons voir tout un combo à base de machine virtuelle, de process Temporal, de FTP depuis la Freebox, tout un outillage que l'on possède souvent chez soi et qui permet de faire quelque chose de très puissant. C'est parti !

Comment j'ai organisé mon process Temporal

Connaissez vous le concept de la CI ?

La CI pour continuous integration, consiste à mettre en place des process qui permettent de déployer le code freshement codé le plus tôt possible, si ce n'est au moment même où une branche a été mergée sur master.

Très souvent ces systèmes partent de Webhook sur git (que ce soit Gitlab ou Github, c'est pareil), une fois une Pull Request mergée, on va lancer un déploiement de cette feature. En général, il y a quelques étapes de vérification comme des tests unitaires et des tests end to end qui vérifient que votre branche est stable et apte à être déployée. Une fois que tous les tests sont ok, c'est parti, on lance le déploiement.

Sur le même principe, même si je n'ai pas de code serveur à redéployer, j'ai envie de lancer un build d'un projet Electron, comprenez ici la génération de l'exécutable et de packager tout cela pour mon client. C'est ainsi que j'ai décrit un Workflow sur Temporal qui me permet de mettre cela en place.

Je commence par définir mon besoin :

Je veux être capable de cloner un projet Electron depuis mon Github, d'installer les dépendances et lancer le build. Une fois que cela est fait, je veux compresser mon build et uploader le fichier zip sur un FTP afin de pouvoir distribuer mon exécutable.

Sur la base de ces objectifs, je me demande quels sont les paramètres susceptibles de changer avant chaque déclenchement du Workflow ?

  • le repository git peut changer
  • la branche du repo peut changer
  • le chemin sur le FTP peut changer

Ainsi, ces 3 paramètres vont devenir des variables en entrée de mon workflow Temporal.

Maintenant je monte mon Workflow :

flowchart TD A[Créer un dossier temporaire
prêt à recevoir mon code] --> B[Cloner le repo] --> C[Basculer sur la branche] C --> D[Installer les dépendances] --> E[Compiler le projet Electron] --> F[Compresser le package] --> G[Uploader le zip] --> H[Supprimer le dossier temporaire] --> I((( )))

Je vous passe l'installation de toute cette tambouille sur ma machine virtuelle, je dirai juste que pour faire tourner Temporal sous Windows, vous aurez non seulement besoin de Node, mais aussi de Rust, installer git, 7zip, modifier le path, etc. Enfin, vous devez installer l'exécutable Temporal sous Windows qui permet de lancer des commandes Temporal.

Cela reste du code, donc on se fait plaisir !

Temporal-code.gif

Un FTP sur la Freebox ?

Oui ! Il y a un FTP embarqué sur la bonne vieille Freebox Revolution.

Et pour cela, sur la page de gestion de votre Freebox Revolution, ouvrez le menu "Paramètres de la Freebox", puis rendez-vous dans le menu FTP et cliquez sur la case "Activer le serveur FTP". C'est fait !

ftp_freebox.png

Pour le nom d'utilisateur, c'est affiché, entrez votre mot de passe et voilà vous pouvez passer sur Filezilla faire vos premiers essais.

Qu'est-ce que ça donne une fois terminé ?

Voici Temporal qui exécute le process de build :

temporal-clone-and-build

On peut jeter un oeil sur notre FTP pour voir s'il y a déposé le fichier :

Côté Webview :

freebox-ftp-webview

Sur Filezilla :

freebox-ftp-filezilla

Et bien tout a l'air nickel ! 😊

Et comme je vous dis, s'il y a le moindre fail sur une étape, je peux faire mes correctifs tranquillement et Temporal fera automatiquement le retry de l'activité sans que j'ai à intervenir manuellement et hors process. J'ai notamment, rencontré le problème avec l'étape de compression sous Windows, le temps que de faire un correctif, la tâche a pu reprendre et s'achever sans soucis.

C'est vraiment magique, aussi je recommande chaudement cet outil pour les process long.

La prochaine fois, je ferai un petit topo concernant Proxmox, la machine virtuelle que j'ai mis en place pour créer ma Temporal machine.

#temporal#proxmox#electron#windows#vm#ci#freebox

user picture
Alexandre P.

Développeur passionné depuis plus de 20 ans, j'ai une appétence particulière pour les défis techniques et changer de technologie ne me fait pas froid aux yeux.