Le versionnage des projets est une étape essentielle du cycle de vie d’un logiciel. Elle permet, si bien réalisée, d’identifier les versions, les fonctionnalités, les changements critiques, ainsi que les correctifs appliqués à une application dans le temps.
Il est important de mettre en place des processus et des outils de gestion de version efficaces pour faciliter l’évolutivité de ses versions dans le temps, de cette façon, il sera plus facile de réaliser des mises à jours et retour en arrière au besoin.
Dans cet article, nous commencerons par présenter Semantic Release, un outil de versionnage qui permet de mettre en place les bonnes pratiques de versionnage, puis nous vous montrerons comment le configurer sur un projet Angular hébergé sur Github.
Avant de présenter Semantic Release, il est important de connaitre le Semantic Versioning. Le Semantic Versioning est un standard de versionnage très répandu dans le monde du logiciel et défini formellement sur son site officiel : https://semver.org/
Il permet aux créateurs de logiciels de mettre en avant les modifications de leur logiciel de façon standardisée via un système de version basé sur 3 nombres séparés d’un point sous le format Major.Minor.Patch où :
Major : à incrémenter si un changement dans le code entraine en rupture avec la version précédente (changement d’URLs, changement de paradigme d’utilisation, etc)
Minor : à incrémenter si une nouvelle fonctionnalité est ajoutée sans ajouter de changements qui casserait l’usage du composant après une mise à jour
Patch : à incrémenter après avoir corrigé un bug ou introduit des changements ne changeant pas le comportement du logiciel
A noter que :
Semantic Release automatise l'ensemble du flux de travail de publication de l’application, notamment la détermination du numéro de version suivant, la génération des notes de publication et enfin la publication du package. Son objectif principal est de permettre aux développeurs de se concentrer sur l'écriture de code de qualité plutôt que de passer du temps à gérer manuellement le processus de versionnage et de publication.
Cela supprime le lien immédiat entre les émotions humaines et les numéros de version, en suivant strictement le Semantic Versioning et en communiquant l'impact des modifications aux consommateurs.
Pour automatiser le processus de publication de versions de logiciels, Semantic Release met à disposition un ensemble de plugins tels que :
@semantic-release/git
: création et push de la nouvelle version du code source vers le dépôt Git correspondant, en utilisant la convention SemVer.