Publication : session CapRover vraiment vérifiée, version servie contrôlée #48
+23
-4
@@ -11,6 +11,7 @@ set -euo pipefail
|
||||
|
||||
CAPROVER_MACHINE="${CAPROVER_MACHINE:-sans-pub}"
|
||||
CAPROVER_APP="${CAPROVER_APP:-ustagammon}"
|
||||
SITE_URL="${SITE_URL:-https://ustagammon.sans.pub}"
|
||||
|
||||
die() {
|
||||
echo "Erreur : $1" >&2
|
||||
@@ -33,9 +34,14 @@ git fetch -q origin main
|
||||
[ "$(git rev-parse main)" = "$(git rev-parse origin/main)" ] \
|
||||
|| die "main diffère d'origin/main : git pull (ou fusionner la MR) d'abord"
|
||||
|
||||
# Le jeton CapRover expire ; caprover ls ne le vérifie pas.
|
||||
caprover api -n "$CAPROVER_MACHINE" -t /user/system/info -m GET -d '{}' -o false >/dev/null 2>&1 \
|
||||
|| die "session CapRover expirée : lancer caprover login dans un terminal"
|
||||
# Le jeton CapRover expire ; caprover ls ne le vérifie pas. Sans terminal
|
||||
# (stdin fermé), la CLI ne peut pas demander le mot de passe : elle doit
|
||||
# échouer, et sa sortie ne doit pas contenir de demande de mot de passe (le
|
||||
# 2026-11-09, elle a demandé le mot de passe puis rendu 0 sans rien publier).
|
||||
if ! session=$(caprover api -n "$CAPROVER_MACHINE" -t /user/system/info -m GET -d '{}' -o false </dev/null 2>&1) \
|
||||
|| grep -qi "password\|not valid anymore" <<<"$session"; then
|
||||
die "session CapRover expirée : lancer caprover login dans un terminal"
|
||||
fi
|
||||
|
||||
echo "Vérification avant publication : make lint et make test"
|
||||
make lint
|
||||
@@ -43,4 +49,17 @@ make test
|
||||
|
||||
make package
|
||||
echo "Publication de main ($(git rev-parse --short main)) sur l'app $CAPROVER_APP"
|
||||
caprover deploy -n "$CAPROVER_MACHINE" -a "$CAPROVER_APP" -t build/ustagammon.tar
|
||||
caprover deploy -n "$CAPROVER_MACHINE" -a "$CAPROVER_APP" -t build/ustagammon.tar </dev/null
|
||||
|
||||
# La CLI peut rendre 0 sans avoir publié : on vérifie le résultat réel, le
|
||||
# commit servi par le site (version.json), pendant deux minutes au plus.
|
||||
commit=$(git rev-parse main)
|
||||
for _ in $(seq 24); do
|
||||
served=$(curl -fsS "$SITE_URL/version.json?verif=$RANDOM" 2>/dev/null || true)
|
||||
if grep -q "\"$commit\"" <<<"$served"; then
|
||||
echo "Publié : $SITE_URL sert $(git rev-parse --short main)."
|
||||
exit 0
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
die "le site ne sert pas le commit $(git rev-parse --short main) après 2 minutes : la publication a échoué (version servie : ${served:-aucune})"
|
||||
|
||||
Reference in New Issue
Block a user