[BUGFIX] Utiliser uniquement les commits de merges pour les releases. #43
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🦄 Problème
Si on regarde, le changelog ou bien les releases GitHub, la section “Montée de version” a un soucis :
Chaque PR faite par Renovate apparait deux fois. Cela est dû au fait que Renovate, a un titre de commit qui va ensuite être répercuté en titre de PR.
J’ai pu modifier la configuration de Renovate pour avoir un commit sous le format conventional-commit et un titre de PR qui correspond à nos standards :
Cependant, cela avait pour conséquence de mettre tout le titre de PR en minuscule, ce qui nous convient pas.
De plus, l’option
prTitle
est dépréciée :C’est donc pas très pérenne de se baser dessus.
Je me demande ce que je peux faire du côté de
semantic-release
etconventional-changelog-pix
Du côté de semantic-release, les commits sont récupérés grâce à une fonction interne getCommits qui ne prend pas d’option de l’extérieur, dommage, car en dessous ça utilise git-log-parser et cette librairie accepte toutes les options de la commande git log dont --merges
Ensuite, du côté de @semantic/commit-analyzer rien à faire la lib itère sur les commits passés par semantic-release, utilise le parser de conventional-changelog-parser et une configuration de parser, pour nous c’est conventional-changelog-pix, puis cela applique les règles fournies en config.
Donc, il faudrait plutôt se pencher sur conventional-changelog-pix, pour ne pas retourner de tag quand c’est pas un commit de merge.
Comment marche conventional-changelog-pix : c’est juste des regex qui sont appliquées par le parser conventional-changelog-parser. C’est d’ailleurs pas si explicite, j’ajoute donc des tests pour améliorer ça.
Par contre, ce qui est embêtant, c’est que notre élément différenciant entre le commit de merge et le commit, c’est qu’on a le numéro de PR dans le cas de la PR de merge. Mais le parser prend un commit et split toutes les lignes du commit pour les analyser, on ne peut donc pas faire une regex qui matcherait et la première ligne et la seconde. C'est donc pas du côté de cette librairie que le souci va être résolu.
Et nous voilà ici.
🤖 Proposition
Actuellement,
semantic-release
se base sur les commits qui ont des tags pour choisir le type de version, comme ce n'est pas suffisant pour matcher les commits de merges, nous ajoutonspr: '*'
, pour s'assurer que pr ne soit pas à nulle. (cf: les tests du côté de conventional-changelog-pix qui montre que pr n'est pas toujours rempli)🌈 Remarques
Ne résoud pas le changelog, mais au moins le choix de version le changelog est fait dans cette PR : 1024pix/conventional-changelog-pix#34
💯 Pour tester