Un tag poussé deux fois ne publie plus qu'une fois - #1
Merged
Merged
Conversation
Le tag v0.3.3 est parti deux fois : deux runs, même SHA, même seconde. Le premier a publié, le second a rejoué toute la chaîne pour se heurter au registre — « cannot publish over the previously published versions » — et signaler en rouge une release qui avait réussi. Un job `guard` demande maintenant à npm si la version existe déjà, et le job `publish` ne démarre que sinon. Un job séparé plutôt qu'une condition posée sur chaque étape : le doublon se lit alors comme ignoré et non comme cassé, et une notification d'échec qui ment finit par apprendre à ignorer la prochaine qui dit vrai. Le test porte sur la sortie de `npm view`, pas sur son code de retour : celui-ci vaut E404 aussi bien pour une version absente que pour un paquet qui n'existe pas encore, le jour de la première publication. Au passage, les actions rejoignent celles de `ci.yml` et `pages.yml` — v7, et la version de Node lue dans `.nvmrc` au lieu d'un 22 écrit en dur qui pouvait diverger. `id-token: write` descend au job qui publie ; le garde ne lit que le dépôt. Claude-Session: https://claude.ai/code/session_01N9dogM3o4ejFdnYtDjPQkb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Le symptôme
Le tag
v0.3.3a produit deux runsRelease(même SHA, même seconde) : le premier a publié0.3.3à 08:37:01, le second a rejoué validate + build pour se heurter au registre à 08:37:58 :La publication était bonne ; seule la notification était rouge.
cancel-in-progress: falsene protège de rien ici — il met le doublon en file d'attente au lieu de l'annuler, ce qui reste le bon arbitrage : tuer une publication à moitié écrite serait pire.Le correctif
Un job
guarden amont interroge npm et n'activepublishque si la version manque. Job séparé plutôt que condition répétée sur quatre étapes : le doublon apparaît alors skipped, plus failed, et le mail rouge disparaît.Le test porte sur la sortie de
npm view, pas sur son code de retour — E404 couvre autant une version absente qu'un paquet pas encore publié.Au passage : actions alignées sur
ci.yml/pages.yml(v7,node-version-file: .nvmrc), etid-token: writedescendu au seul job qui publie.Vérifications
Le script du garde a été exécuté sur les quatre cas réels :
v0.3.3, déjà sur npmpublish=false, exit 0v9.9.9≠ package.json0.3.3::error::, exit 1publish=true, exit 0publish=true, exit 0La claim OIDC (
repo+ nom du fichier workflow) est inchangée : le trusted publisher déclaré côté npm continue de correspondre.https://claude.ai/code/session_01N9dogM3o4ejFdnYtDjPQkb