🐛 fix(ci): GitHub Actions impose bash -e, le set -uo ne le désactive pas - #28
Merged
Conversation
Le premier tag candidat a fait échouer le job build sans la moindre sortie.
Cause : le step tourne sous `bash -e {0}` — imposé par GitHub Actions, visible
dans le log — et `set -uo pipefail` ne retire pas ce `-e`. L'affectation
`OUT=$(docker manifest inspect …)` tuait donc le step dès que la commande
renvoyait non-zéro, c'est-à-dire précisément dans le cas nominal du premier
tag, quand l'image n'existe pas encore. Le `if` qui suivait n'était jamais
atteint, d'où l'absence totale de trace.
Passage à `if OUT=$(…)`, qui met la commande en contexte conditionnel où
`set -e` ne mord pas.
La branche « image absente » trace maintenant la réponse du registre. On ne
sait toujours pas comment GHCR formule cette absence — le step est mort avant
de l'afficher — et cette réponse décide si `denied` doit rejoindre les motifs
d'absence ou rester traité comme une erreur indéterminée. Il reste dehors
tant que la preuve manque : c'est le sens du fail-closed.
Notes du candidat rc.2, le rc.1 n'ayant rien publié.
refs #26
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.
Summary
Le premier tag candidat (
v1.0.0-rc.1) a fait échouer le jobbuildsans la moindre sortie.resolveétait vert : les gates de version, de notes et d'ascendance fonctionnent.Cause : le step tourne sous
bash -e {0}— imposé par GitHub Actions, visible dans le log — etset -uo pipefailne retire pas ce-e. L'affectationOUT=$(docker manifest inspect …)tuait donc le step dès que la commande renvoyait non-zéro, c'est-à-dire précisément dans le cas nominal du premier tag, quand l'image n'existe pas encore. Leifqui suivait n'était jamais atteint, d'où l'absence totale de trace.C'est exactement ce à quoi sert l'étage candidat : le bug est tombé sur preprod, pas en production.
Related Issue
Closes #26
Type of Change
Scope
Changes
release.yml:if OUT=$(docker manifest inspect …)au lieu deOUT=$(…); RC=$?— leifmet la commande en contexte conditionnel, oùset -ene mord paschangelogs/pre-releases/1.0.0-rc.2.md— le rc.1 n'a rien publiéTests
grepsurset -uo/RC=$?) — les quatre autres steps sont enset -euo, cohérent avec le-edu shellv1.0.0-rc.2est la vérification — c'est l'objet du tag qui suitChecklist
make typecheck) — sans objetmake lint) — sans objetAdditional Notes
Ce qu'on ne sait toujours pas : comment GHCR formule l'absence d'un tag. Le step est mort avant de l'afficher. Cette réponse décide si
denieddoit rejoindre les motifs d'absence ou rester traité comme une erreur indéterminée — un finding P1 de la review avait fait retirerdeniedde la liste.Il reste dehors tant que la preuve manque : c'est le sens du fail-closed. Si le prochain run échoue à nouveau, le log donnera enfin la réponse, et on tranchera dessus plutôt qu'au jugé.