🐛 fix(ci): ssh-keyscan avec timeout et retry, il tuait le déploiement - #31
Merged
Conversation
Le premier déploiement prod de v1.0.0 est tombé sur `Setup ssh`, cinq secondes après un « ssh key OK » : le timeout par défaut de ssh-keyscan. La commande était la dernière du step, sans timeout explicite ni retry, et son `2>/dev/null` masquait la raison — sous le `bash -e` qu'impose GitHub Actions, son code de retour devenait celui du job. Un keyscan qui n'aboutit pas est pourtant transitoire par nature : la cible répondait avant et répond encore. Timeout porté à 10 s, cinq tentatives espacées, vérification que known_hosts est non vide, et échec explicite avec message si la clé hôte reste inaccessible. Appliqué aux deux workflows : le bloc SSH y est dupliqué. C'était un choix assumé — neuf inputs à déclarer puis repasser coûtaient plus que vingt lignes de YAML — mais c'est la première fois qu'il faut corriger aux deux endroits. S'il rebouge, il faudra l'extraire en action composite. refs #26
24 tasks
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 déploiement prod de
v1.0.0est tombé surSetup ssh, cinq secondes exactement après unssh key OK— le timeout par défaut dessh-keyscan.La commande était la dernière du step, sans timeout explicite ni retry, et son
2>/dev/nullmasquait la raison. Sous lebash -equ'impose GitHub Actions, son code de retour devenait celui du job.Un keyscan qui n'aboutit pas est pourtant transitoire par nature : la cible répondait avant, et répond encore (
rc=0sur trois essais depuis une autre machine, après coup).Related Issue
Closes #26
Type of Change
Scope
Changes
Dans
release.ymletdeploy.yml:-T 10— timeout explicite au lieu des 5 s par défaut[ -s ~/.ssh/known_hosts ]— on vérifie qu'une clé a vraiment été écrite, unrc=0sans contenu ne suffit pasexit 1muetTests
ssh-keyscansur la cible rejoué hors CI :rc=0trois fois — l'échec était bien transitoirev1.0.0Checklist
make typecheck) — sans objetmake lint) — sans objetAdditional Notes
Le bloc SSH est dupliqué entre les deux workflows. C'était un choix assumé lors de #19 — neuf inputs à déclarer puis à repasser deux fois coûtaient plus que vingt lignes de YAML. C'est la première fois qu'il faut corriger aux deux endroits ; s'il rebouge, il faudra l'extraire en action composite.
Second incident, distinct et non traité ici : le run
deploy.ymldu même merge a échoué sur le build, pas sur SSH —@nuxt/fontsa reçu un 404 defonts.gstatic.compour une woff2 Inter. Le build Docker dépend donc du réseau Google au moment du build. À traiter à part.État de la release : le tag
v1.0.0est posé surmainet l'imageghcr.io/kbrdn1/kbrdn.dev:v1.0.0est publiée — seuls le déploiement prod et la release GitHub manquent. La reprise se fera parworkflow_dispatchsur le tag, qui saute le build puisque l'image existe déjà.