Déploiement CapRover : site statique construit sur le PC, servi par Caddy

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-02 20:37:00 +01:00
co-authored by Claude Opus 5.5
parent 14d1186e84
commit 84998608d5
8 changed files with 268 additions and 2 deletions
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
# Vérifie l'image de production (deploy/) avec le site assemblé (make package) :
# construit l'image en local, la lance, et contrôle ce que reçoit un
# navigateur (pages, types MIME du moteur, compression, version).
set -euo pipefail
cd "$(dirname "$0")/.."
unset MAKEFLAGS MFLAGS MAKELEVEL
make -s package >/dev/null
image="ustagammon/site-test:local"
docker build -q -t "$image" build/deploy >/dev/null
container="$(docker run -d --rm -p 127.0.0.1::80 "$image")"
trap 'docker stop "$container" >/dev/null' EXIT
port="$(docker port "$container" 80/tcp | head -n1 | sed 's/.*://')"
base="http://127.0.0.1:$port"
# Caddy démarre en une fraction de seconde : on attend qu'il réponde.
for _ in $(seq 1 50); do
curl -sf -o /dev/null "$base/" && break
sleep 0.1
done
errors=0
report() {
echo "$1"
errors=$((errors + 1))
}
# check <chemin> <début du type MIME attendu>
check() {
local headers
headers="$(curl -s -D - -o /dev/null "$base/$1")"
grep -qE "^HTTP/1.1 200" <<<"$headers" || report "/$1 : pas de réponse 200"
grep -qiE "^Content-Type: $2" <<<"$headers" || report "/$1 : type MIME attendu $2"
}
check "" "text/html"
check "bench.html" "text/html"
check "engine-worker.mjs" "text/javascript"
check "wasm/engine.mjs" "text/javascript"
check "wasm/engine.wasm" "application/wasm"
check "wasm/engine.data" "application/octet-stream"
check "version.json" "application/json"
curl -s -H "Accept-Encoding: gzip" -D - -o /dev/null "$base/wasm/engine.data" \
| grep -qi "^Content-Encoding: gzip" || report "/wasm/engine.data : pas de compression gzip"
curl -s -D - -o /dev/null "$base/" | grep -qi "^Cache-Control: no-cache" \
|| report "/ : en-tête Cache-Control absent"
[ "$(curl -s "$base/version.json" | sed -n 's/.*"commit": "\([0-9a-f]*\)".*/\1/p')" = "$(git rev-parse HEAD)" ] \
|| report "version.json ne donne pas le commit courant"
[ "$errors" -eq 0 ]