Ce billet explique comment automatiser les releases logicielles en utilisant les Conventional Commits, SemVer, CHANGELOG et git-cliff via GitHub Actions. L’idée centrale repose sur l’analyse des messages de commit (formatés selon Conventional Commits) pour générer automatiquement une nouvelle version, un CHANGELOG et une release GitHub, sans intervention manuelle hormis la validation finale d’une PR.
L’auteur détaille la configuration de git-cliff (via un fichier cliff.toml) qui filtre les commits pertinents (feat, fix, etc.) et applique les règles de versionnage SemVer. Un postprocessing simplifié remplace les références de PR par des liens Markdown, évitant ainsi la gestion complexe de tokens GitHub. Le workflow CI/CD, déclenché à chaque push sur main, prépare une PR de release si nécessaire, réduisant l’intervention humaine à un simple merge.
L’approche est adaptée aux projets déployés avec un mainteneur unique, excluant les bibliothèques ou monorepos aux contraintes spécifiques. La solution mise en avant privilégie la simplicité, avec une configuration versionnée et des outils légers (binaire Rust ou image Docker), garantissant un comportement cohérent entre local et CI.
L'auteur critique le format Conventional Commits, un standard populaire pour structurer les messages de commit Git, qu'il juge inefficace et contre-productif. Selon lui, ce format met l'accent sur le type de commit (comme fix ou feat) au détriment du scope (la partie du code concernée), alors que ce dernier est bien plus utile pour les développeurs, les débogueurs ou les équipes en réponse aux incidents. Le scope permet de localiser rapidement les changements pertinents dans l'historique, contrairement au type, souvent redondant ou trop restrictif.
L'article souligne que le scope devrait être obligatoire et placé en tête du message, car il répond aux besoins concrets des contributeurs, des débogueurs et des équipes de maintenance. À l'inverse, le type est jugé superflu, car le libellé du commit suffit généralement à en déduire la nature. L'auteur dénonce ainsi une priorisation inversée dans le standard, qui complique plutôt que simplifie la compréhension de l'historique des modifications.
Tout est dans le titre
Tout est dans le titre
La spécification des commits conventionnels