55 lines
1.9 KiB
Bash
Executable File
55 lines
1.9 KiB
Bash
Executable File
#!/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 ]
|