Repository navigation
fix(ci): garde-fou de déploiement lisible depuis un if, et lint des workflows - #5
Merged
Merged
Conversation
…orkflows
Le workflow Deploy était invalide et aucun job ne démarrait : le garde-fou
utilisait `if: ${{ secrets.SCW_CONTAINER_ID != '' }}`, or le contexte `secrets`
n'est autorisé dans aucun `if`, ni au niveau job ni au niveau step. L'image n'a
donc jamais été publiée sur GHCR au merge de la PR #4.
Le secret passe désormais par `env` au niveau du job — un des rares endroits où
`secrets` est autorisé — et les steps testent `env`, qui est lisible depuis un
`if`. Une notice explicite signale le cas sauté plutôt que de laisser un job
vide et silencieux.
Ajoute actionlint à la CI, qui détecte précisément cette erreur. Sans lui,
deploy.yml n'était validé par rien : il ne se déclenche que sur `master`, donc
une PR ne pouvait pas en révéler les défauts. Le binaire vient d'une release
épinglée et non d'un `curl | bash`, pour ne pas exécuter en CI du code non
versionné.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 bug
Le run 30172628259 a échoué sans qu'aucun job ne démarre, et l'image n'a donc jamais été publiée sur GHCR.
Cause : le garde-fou introduit en PR #4 s'écrivait
Or le contexte
secretsn'est autorisé dans aucunif, ni au niveau job ni au niveau step (context availability). Le workflow était rejeté à la validation.Le correctif
secretsest autorisé dansjobs.<id>.env, etenvest lisible depuis unifde step. Le relais se fait donc par là :Bénéfice annexe : les trois variables ne sont plus dupliquées dans chaque step. Une notice explicite est émise quand le déploiement est sauté, pour ne pas laisser un job vide et inexplicable.
Pourquoi actionlint
deploy.ymlne se déclenche que surmaster: aucune PR ne pouvait le valider, ce qui est exactement pourquoi ce bug est passé.actionlintdétecte l'erreur d'origine mot pour mot :Il a d'ailleurs immédiatement attrapé une seconde erreur pendant l'écriture de ce correctif : un
:non échappé dans un scalaire YAML.Le binaire est téléchargé depuis une release épinglée (
1.7.12) plutôt que via uncurl | bash, pour ne pas exécuter en CI du code non versionné.Effet attendu au merge
Le workflow Deploy devient valide, l'image est publiée sur GHCR, et le job de déploiement est sauté avec une notice puisque les secrets d'infrastructure ne sont pas encore posés — ce qui est la séquence d'amorçage voulue.
🤖 Generated with Claude Code