Description
Le hook commit-msg Husky (.husky/commit-msg → pnpx commitlint --edit) fonctionne correctement : il rejette bien les messages non conformes au conventionnel lors d'un git commit local (vérifié en conditions réelles, code 1 sur message non typé).
Cependant, cette validation n'est exécutée que côté client. Rien n'empêche côté serveur qu'un message non conventionnel atteigne une PR : tout commit créé en dehors du chemin du hook git (outils tiers, interface non git, rebases/imports distants) passe sans contrôle. Le workflow job-lint.yml ne lance que ESLint et ne valide pas les messages de commit.
Conséquence : des messages non conventionnels arrivent dans les PRs et dans l'historique, ce qui fragilise le versioning automatique (Release Please) et la génération de changelog.
PRs liées
N/A
Issues liées
N/A
Exemples simples
N/A
Spécifications techniques
Ajouter une étape de validation des messages de commit dans la CI, exécutée sur les PRs, indépendamment du hook client :
- Ajouter un job (ou une étape dans
job-lint.yml) lançant commitlint sur la plage de commits de la PR, par exemple via @commitlint/action ou un script pnpm dédié (ex. commitlint --from "origin/main" --to HEAD).
- Ne pas casser les PRs historiques : limiter la validation aux commits ajoutés par la PR (plage
origin/main..HEAD), pas Ă l'historique complet.
- Conserver le hook Husky côté client comme retour rapide, la CI devenant le garde-fou incontournable.
- Réutiliser la config existante
commitlint.config.cjs (extends @commitlint/config-conventional + règle body-leading-blank).
Définition du fini
Description
Le hook
commit-msgHusky (.husky/commit-msg→pnpx commitlint --edit) fonctionne correctement : il rejette bien les messages non conformes au conventionnel lors d'ungit commitlocal (vérifié en conditions réelles, code 1 sur message non typé).Cependant, cette validation n'est exécutée que côté client. Rien n'empêche côté serveur qu'un message non conventionnel atteigne une PR : tout commit créé en dehors du chemin du hook git (outils tiers, interface non git, rebases/imports distants) passe sans contrôle. Le workflow
job-lint.ymlne lance que ESLint et ne valide pas les messages de commit.Conséquence : des messages non conventionnels arrivent dans les PRs et dans l'historique, ce qui fragilise le versioning automatique (Release Please) et la génération de changelog.
PRs liées
N/A
Issues liées
N/A
Exemples simples
N/A
Spécifications techniques
Ajouter une étape de validation des messages de commit dans la CI, exécutée sur les PRs, indépendamment du hook client :
job-lint.yml) lançantcommitlintsur la plage de commits de la PR, par exemple via@commitlint/actionou un scriptpnpmdédié (ex.commitlint --from "origin/main" --to HEAD).origin/main..HEAD), pas à l'historique complet.commitlint.config.cjs(extends@commitlint/config-conventional+ règlebody-leading-blank).Définition du fini
origin/main..HEAD)commitlint.config.cjsexistante est réutilisée sans duplication