#!/usr/bin/env bash # Publie la branche main sur CapRover (voir docs/deploiement.md). # # Le site est construit et testé sur le PC, puis envoyé sous forme d'archive : # le serveur ne fait que copier les fichiers dans une image Caddy. # # Prérequis : CLI caprover (via fnm) connecté à la machine CapRover # (caprover login). set -euo pipefail CAPROVER_MACHINE="${CAPROVER_MACHINE:-sans-pub}" CAPROVER_APP="${CAPROVER_APP:-ustagammon}" die() { echo "Erreur : $1" >&2 exit 1 } cd "$(git rev-parse --show-toplevel)" # La CLI caprover est installée avec Node par fnm. if ! command -v caprover >/dev/null && command -v fnm >/dev/null; then eval "$(fnm env --shell bash)" fnm use --silent-if-unchanged lts-latest >/dev/null || true fi command -v caprover >/dev/null || die "CLI caprover introuvable (voir docs/deploiement.md)" # On ne publie que main, propre et identique à origin/main. [ "$(git branch --show-current)" = "main" ] || die "lancer le déploiement depuis la branche main" git diff --quiet HEAD || die "des modifications ne sont pas commitées" 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" echo "Vérification avant publication : make lint et make test" make lint 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