Je t’introduit aujourd’hui au concept de l’intégration continue. Mais, avant, je te mets un peu la table.
Les humains ne sont généralement pas friands des changements à répétition. S’adapter à une nouvelle réalité, ça peut prendre du temps. Sauf si on y va une étape à la fois.
Lorsqu’on crée du contenu avec l’informatique, que ce soit des logiciels, des documents ou des publications, on a tendance à garder les choses de notre côté pour faire des lancements, pour tout changer d’un seul coup.
Mais, en faisant ça, on accumule beaucoup de charge mentale. On crée un moment où ça passe ou ça casse. Le risque d’avoir mis des efforts pour rien est énorme.
Dans le monde logiciel, un des domaines d’ingénierie les plus complexes, on veut éviter de faire des grands dévoilement. Les gens de la SAAQ au Québec l’ont appris bien à leurs dépens. Les hauts dirigeants aiment ça couper le ruban et faire des cérémonies. Mais, d’un point de vue développement logiciel, et de relations de travail harmonieuses, c’est un plan foireux. Ça ne se passe jamais comme prévu.
Les grandes firmes de consultation sont habituées de s’en mettre plein les poches avec les biais cognitifs des dirigeants. Mais, tu n’es pas dirigeant d’une grande entreprise, et tu te soucie de ton bien-être et de celle des gens autour de toi.
L’intégration continue pourrait être une solution pour toi ! Tu pourrais apprendre à créer tes propres outils qui travaillent à ta place, à ton rythme !
C’est quoi, l’intégration continue ?
L’intégration continue, c’est un mécanisme qui permet d’intégrer les changements dans un produit numérique, tel que des documents ou du code, presque immédiatement.
Ça met à profit deux technologies: la gestion des versions et l’automatisation.
La gestion des version
La gestion des version est apparue pour réconcilier le travail fait par des équipes distribuées qui travaillent sur des projets qui comportent de nombreuses composantes.
C’est un moyen de ne pas se piler sur les pieds et de séparer le travail. Chacun part avec ses tâches, modifie les fichiers informatiques requis, puis envoie son travail à un serveur centralisé qui s’occupe d’intégrer les nouveautés au produit automatiquement.
L’automatisation
L’automatisation est composée de deux parties: les tests et le déploiement. Avant d’apporter des modifications à un contenu, tu veux t’assurer de ne rien briser.
Les tests
Les tests de non-régression vont t’assurer que les améliorations passées sont toujours présentes. Tu ne voudrais pas ramener des bogues que tu as déjà corrigés.
Tu veux aussi t’assurer que les nouveauté fonctionnent bien comme prévu. Ce sont les tests unitaires qui vont permettre ça. Et enfin, pour t’assurer que le produit au complet est cohérent. on va faire des tests d’intégration.
Une fois que tous les tests ont réussi, on passe à une nouvelle étape: le déploiement.
Le déploiement
Le but du déploiement est de remplacer l’ancienne version du produit par une nouvelle, sans devoir faire des opérations manuelles. On veut que ça soit le plus instantané possible.
La pratique la plus fréquente est d’utiliser des conteneurs pour les logiciels et des générateurs de contenu statique pour les contenus rédigés tels que les documents ou les sites web. Au lieu de modifier, on supprime et on en crée un nouveau. Comme ça, on recommence toujours avec une version propre et on n’a pas à corriger les anciennes version.
On utilise quels outils pour faire de l’intégration continue ?
On va généralement utiliser trois outils différents:
- un gestionnaire de version, tel que GitHub ou GitLab
- un outil d’intégration, tel que Jenkins, ou encore ceux intégrés aux gestionnaires de versions tels que GitHub Actions ou GitLab CI/CD
- un outil d’exécution de tâches:
- dans le cas de déploiements d’applications avec des conteneurs, on va construire une nouvelle image et la remplacer sur les serveurs où elle est exécutée (généralement, dans un environnement Docker Swarm ou Kubernetes). Ce travail se fait souvent avec un outil en ligne de commandes tel que ssh, kubectl ou oc.
- dans le cas de la production de sites web, on va utiliser un générateur de site statique tel que Jekyll ou Hugo, ou un générateur de document tel que Pandoc, PDFtk ou ImageMagick.
- Tu peux même déclencher des tâches à distance en utilisant des API ou des systèmes de composition de tâches tels que Zapier ou n8n !
Et ça demande beaucoup de ressources, tout ça ?
Comme toute technologie, il y a une courbe d’apprentissage au départ. C’est normal ! Mais, l’avantage, c’est qu’une fois que tu as fait un premier projet d’automatisation, tu peux ensuite réutiliser tout ce que tu as développé pour les suivants. C’est un peu ça, la magie du code !
Les compétences à développer
Les compétences à développer seront utiles dans plusieurs aspects de ton entreprise:
- La gestion de versions: un excellent moyen de gérer les itérations avec ta clientèle.
- Si tu fais de la rédaction, des sites web ou des logiciels, c’est incontournable ! Les juristes, en particulier, adorent utiliser la gestion de versions !
- La programmation: savoir programmer permet de se sauver du travail ennuyeux en créant nos propres outils pour aller plus vite ! Pas besoin de devenir pro. Des scripts simples peuvent faire beaucoup pour nous !
- L’automatisation: ça te demande de mettre sur papier ton processus de création. Pour chacun de tes projets, il y a toujours une étape d’emballage qui se répète d’une fois à une autre.
- Les graphistes, par exemple, fournissent différents formats des mêmes contenus dans plusieurs formats de fichiers.
- Les gens en rédaction publient sous forme de blogs, de eBook et de présentations visuelles.
- Les créateurs et créatrices de contenus vont exporter dans des formats différents pour plusieurs réseaux sociaux.
C’est tout à fait réaliste pour une personne d’apprendre les bases de l’intégration continue et d’ajouter ces compétences à celles d’entrepreneur ou d’employé spécialisé. Même dans une petite entreprise. C’est même là qu’on va y trouver le plus grand gain étant donné les ressources limitées.
Mais, comme toute gestion du changement, ça ne se fait pas du jour au lendemain. Il faut accepter de faire un peu d’essais et erreurs pour trouver la bonne formule pour nous ! C’est un apprentissage qui, de par mon expérience, peut se faire à un rythme de quelques heures par semaine sur un mois ou deux.
Si tu souhaites avoir un accompagnement en développement d’outils et en intégration continue, inscris-toi à mon infolettre, je lance mon programme Y’app pas d’problème à l’automne 2023.