Dans l'article sur la création automatique d'une nouvelle version d'une application, nous avons vu que l'outil semantic-release s'appuie sur des messages de commits conventionnels.
Pour que le processus de création automatique de marquage de la nouvelle version puisse fonctionne correctement, nous allons vérifier que les messages de commits suivent bien les commits conventionnels.
Convention de nommage des commits
Pour rappel, nos commits doivent respecter une convention. Pour cela, nous allons utiliser Commits Conventionnels.
Pour simplifier, un commit commençant par
- "feat: " indique que le commit intègre une nouvelle fonctionnalité
- "fix: " indique que le commit corrige l'application
Pour faire respecter ces règles, nous allons utiliser un outil : commitlint.
Mise en oeuvre de commitlint
commitlint va lire le message de commit et la comparer avec les différentes règles.
Cela nécessite quelques configurations.
Tout d'abord, il faut créer un fichier .commitlintrc.yaml
avec le contenu suivant :
extends:
- "@commitlint/config-conventional"
Cette configuration permet d'indiquer à commitlint d'utiliser les commits conventionnels.
Dans le fichier .gitlab-ci.yml
, ajoutons une tâche pour tester le message de commit.
stage:
- tests
lint:merge_request_title:
image: dockerhub.ftven.net/node:lts
stage: tests
before_script:
- npm install @commitlint/{cli,config-conventional}
script:
- echo "${CI_COMMIT_MESSAGE}" | npx commitlint
Alternatif
Dans le cas d'une merge request, il est possible de vérifier uniquement le titre de la merge request. Ce cas de figure fonctionne bien dans le cas où la branche est fusionnée et squash vers la branche principale.
Pour cela, utiliser la variable Gitlab $CI_MERGE_REQUEST_TITLE.
Félicitation, vous avez automatisé la vérification du message de commit. Prenez une boisson chaude pour vous détendre.
Références