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:
co-authored by
Claude Opus 5.5
parent
14d1186e84
commit
84998608d5
Executable
+54
@@ -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 ]
|
||||
Reference in New Issue
Block a user