Publication : session CapRover vraiment vérifiée, version servie contrôlée #48

Manually merged
pierre merged 1 commits from deploiement-verifie into main 2026-11-09 23:20:55 +00:00
Owner

Pourquoi

Le 2026-11-09, make deploy-prod a affiché un succès (code de sortie 0) alors que rien n'avait été publié : https://ustagammon.sans.pub/version.json servait toujours 3cdd017 au lieu de 809b5ec. Le journal montre deux choses :

  • le jeton CapRover avait expiré : « Your auth token for sans-pub ... is not valid anymore » ;
  • la CLI a demandé le mot de passe, la demande a été fermée faute de terminal (ExitPromptError), et le script s'est terminé avec un code 0.

Deux défauts sont en cause :

  1. La vérification de session en amont (caprover api) ne détecte pas l'expiration. Reproduit : sans terminal, caprover api affiche la demande de mot de passe et rend 0.
  2. Le script fait confiance au code de retour de caprover deploy, qui rend 0 lui aussi.

Quoi

  • Session expirée : le script s'arrête avant de construire, avec « session CapRover expirée : lancer caprover login dans un terminal ».
  • Version publiée : après l'envoi, le script vérifie pendant 2 minutes au plus que le site sert bien le commit publié. Sinon, il échoue et indique la version servie.

Comment

  • Avant de construire : caprover api est appelé avec stdin fermé. Il échoue si son code de retour est non nul, ou si sa sortie contient « password » ou « not valid anymore ».
  • Envoi : caprover deploy est lui aussi lancé avec stdin fermé, pour ne jamais rester bloqué sur une demande de mot de passe.
  • Après l'envoi : le script interroge SITE_URL/version.json (adresse par défaut : https://ustagammon.sans.pub) toutes les 5 s, en ajoutant un paramètre qui contourne les caches.

Choix et compromis

  • Contrôler le résultat réel, c'est-à-dire la version servie, plutôt que de se fier aux codes de retour de la CLI, qui se sont révélés trompeurs.
  • Délai de 2 minutes : la propagation observée jusqu'ici prenait de quelques secondes à 30 s.

Risques et déploiement

Le script ne fait que vérifier davantage, il ne publie rien de plus. Le seul effet possible est un faux échec si le site met plus de 2 minutes à servir la nouvelle version. Dans ce cas, relancer ou vérifier à la main.

Comment vérifier

make lint et make test. Avec une session expirée, make deploy-prod échoue maintenant immédiatement. Après caprover login, il se termine par « Publié : https://ustagammon.sans.pub sert ».

Hors périmètre

La connexion elle-même (caprover login) reste manuelle : elle demande le mot de passe de Pierre.

Generated with Claude Code https://claude.com/claude-code

## Pourquoi Le 2026-11-09, make deploy-prod a affiché un succès (code de sortie 0) alors que rien n'avait été publié : https://ustagammon.sans.pub/version.json servait toujours 3cdd017 au lieu de 809b5ec. Le journal montre deux choses : - le jeton CapRover avait expiré : « Your auth token for sans-pub ... is not valid anymore » ; - la CLI a demandé le mot de passe, la demande a été fermée faute de terminal (ExitPromptError), et le script s'est terminé avec un code 0. Deux défauts sont en cause : 1. La vérification de session en amont (caprover api) ne détecte pas l'expiration. Reproduit : sans terminal, caprover api affiche la demande de mot de passe et rend 0. 2. Le script fait confiance au code de retour de caprover deploy, qui rend 0 lui aussi. ## Quoi - **Session expirée** : le script s'arrête avant de construire, avec « session CapRover expirée : lancer caprover login dans un terminal ». - **Version publiée** : après l'envoi, le script vérifie pendant 2 minutes au plus que le site sert bien le commit publié. Sinon, il échoue et indique la version servie. ## Comment - **Avant de construire** : caprover api est appelé avec stdin fermé. Il échoue si son code de retour est non nul, ou si sa sortie contient « password » ou « not valid anymore ». - **Envoi** : caprover deploy est lui aussi lancé avec stdin fermé, pour ne jamais rester bloqué sur une demande de mot de passe. - **Après l'envoi** : le script interroge SITE_URL/version.json (adresse par défaut : https://ustagammon.sans.pub) toutes les 5 s, en ajoutant un paramètre qui contourne les caches. ## Choix et compromis - **Contrôler le résultat réel**, c'est-à-dire la version servie, plutôt que de se fier aux codes de retour de la CLI, qui se sont révélés trompeurs. - **Délai de 2 minutes** : la propagation observée jusqu'ici prenait de quelques secondes à 30 s. ## Risques et déploiement Le script ne fait que vérifier davantage, il ne publie rien de plus. Le seul effet possible est un faux échec si le site met plus de 2 minutes à servir la nouvelle version. Dans ce cas, relancer ou vérifier à la main. ## Comment vérifier make lint et make test. Avec une session expirée, make deploy-prod échoue maintenant immédiatement. Après caprover login, il se termine par « Publié : https://ustagammon.sans.pub sert <commit> ». ## Hors périmètre La connexion elle-même (caprover login) reste manuelle : elle demande le mot de passe de Pierre. Generated with Claude Code https://claude.com/claude-code
pierre added 1 commit 2026-11-09 23:20:46 +00:00
pierre manually merged commit 5eaf6743b6 into main 2026-11-09 23:20:55 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: pierre/Ustagammon#48