Chez Combodo, nous avons fait le choix de GitHub pour héberger les sources de nos différents projets de développement informatique.
GitHub est un système de gestion de versions décentralisé basé sur la solution open source Git. Cet outil, indispensable dans le monde du développement, permet à toute une équipe de développer en parallèle sur les sources d’un projet.
Collaboration et contributions open source
Les fonctionnalités de collaboration offertes par GitHub, telles que les pull requests et les forks sont particulièrement intéressantes dans le contexte d’un projet open source car elles favorisent les contributions de la communauté sur un projet.
Traçabilité des modifications et gestion de projet
Pour Combodo, la qualité du produit passe par la traçabilité des modifications apportées aux sources des différents projets qui les composent. Ces modifications peuvent avoir des origines multiples : ajout de fonctionnalités, correction de bug, montée de version de librairie, etc. Chaque modification est systématiquement liée à un ticket créé sur iTop.
Suivi des tickets et cycle de vie
Un ticket sur iTop décrit un changement désiré sur le produit : son type, son créateur, sa date de création, son domaine d’application ou encore la personne en charge de son traitement. Ce ticket va suivre un cycle de vie qui va successivement le faire passer dans différents états: Qualifié, Planifié, En cours de traitement, Résolu et Clos.
La qualité du produit passe par la traçabilité des modifications apportées aux sources
Lier GitHub et iTop pour une meilleure traçabilité
On a donc deux systèmes d’informations qui vont détenir des informations sur l’évolution de notre produit. L’un, iTop, est plutôt descriptif et l’autre, GitHub, détient les informations sur les modifications apportées aux sources de l’application. Pour garantir une parfaite traçabilité, nous avons décidé de lier ces deux systèmes.
Synchronisation des informations entre iTop et GitHub
Il est demandé aux développeurs d’utiliser le titre du ticket comme message de commit sur GitHub et de renseigner les informations liées à ces commits, notamment leur identifiant unique Git, dans le ticket sur iTop.
Cependant, cette fastidieuse est sans valeur ajoutée et présente un risque d’erreur.
L’automatisation du processus
C’est pourquoi nous avons décidé de l’automatiser et d’en profiter pour nous familiariser avec les API proposées par GitHub. Ce projet a pu voir le jour grâce à notre Pôle Intégration, équipe dédiée aux intégrations de systèmes tiers, et a été réalisée conjointement avec l’équipe R&D.
Résultat : l’extension combodo-vcs-integration
Ainsi, nous avons développé l’extension combodo-vcs-integration, une extension permettant d’écouter les événements émis par des systèmes de gestion de versions et de déclencher des automatismes pour effectuer des traitements post-réception.
Bien que nous ayons implémenté GitHub à ce jour, l’extension a été conçue pour intégrer, si nécessaire, d’autres systèmes comme GitLab à l’avenir.
L’extension a été conçue pour intégrerd’autres systèmes et d’autres usages
L’objectif de cette première version est de répondre à notre use case principal. Nous avons néanmoins tenu à créer un système générique, qui pourra être étendu à d’autres usages.
Fonctionnement de l’extension
Le cœur de l’extension se base sur les webhooks GitHub qui nous permettent d’écouter les événements émis par une organisation GitHub et de ses dépôts de sources et de déclencher des automatismes qui seront exécutés à leur réception.
Suivi des modifications dans iTop
Nous avons créé deux automatismes : l’un qui permet de tracer des informations relatives aux événements reçus dans le journal système d’iTop (error.log) et un autre qui permet d’ajouter ces informations dans un attribut d’objet d’iTop. C’est ainsi que nous pouvons recenser les modifications des sources de dépôts dans les tickets qui leur correspondent.
Le cœur de l’extension se base sur les webhooks GitHub
Bénéfices de l’automatisation et perspectives
Grâce à cette automatisation, nous sommes désormais libérés des tâches répétitives et sans valeur ajoutée, tout en conservant la traçabilité complète des informations. Cette solution réduit également la charge mentale des développeurs et minimise les risques d’erreurs humaines.
Si ce billet vous inspire et que vous avez des idées d’évolutions à partager, n’hésitez pas à laisser un commentaire sur notre forum. De notre côté, nous avons déjà plusieurs pistes d’améliorations pour l’extension !
Pour les plus aventuriers, nous vous encourageons à explorer cette solution par vous-même, en créant vos propres automatismes.
🤓 Et ce n’est que le début ! Le meilleur reste à venir…