Files
voice-cat/deploy/linux/smoke.sh
Talon 7be93e81a1
.NET port / test (macos-latest) (push) Canceled after 0s
.NET port / test (ubuntu-24.04) (push) Canceled after 0s
.NET port / test (windows-latest) (push) Canceled after 0s
.NET port / cpp-conformance (push) Canceled after 0s
Package managed server for Linux production
2026-09-16 17:08:17 +02:00

24 lines
1.0 KiB
Bash
Executable File

#!/bin/sh
set -eu
server=${1:-./VoiceCat.Server}
work=$(mktemp -d)
pid=
cleanup() { if [ -n "${pid}" ] && kill -0 "$pid" 2>/dev/null; then kill -TERM "$pid"; wait "$pid" || true; fi; rm -rf "$work"; }
trap cleanup EXIT INT TERM
"$server" --data-dir "$work/data" --bind 127.0.0.1 --port 0 >"$work/server.log" 2>"$work/server.err" &
pid=$!
i=0
while ! grep -q '"event":"ready"' "$work/server.log"; do
if ! kill -0 "$pid" 2>/dev/null; then cat "$work/server.err" >&2; exit 1; fi
i=$((i + 1)); [ "$i" -lt 100 ] || { echo "server readiness timeout" >&2; exit 1; }
sleep 0.1
done
port=$(sed -n 's/.*"port":\([0-9][0-9]*\).*/\1/p' "$work/server.log" | head -n 1)
fingerprint=$(sed -n 's/.*"certificate_fingerprint":"\([0-9A-F]*\)".*/\1/p' "$work/server.log" | head -n 1)
"$server" --health-check "127.0.0.1:$port" --expect-fingerprint "$fingerprint" | grep -q '"status":"healthy"'
[ "$(stat -c '%a' "$work/data")" = 700 ]
kill -TERM "$pid"
wait "$pid"
pid=
echo "Linux publish startup, TLS health, private data permissions and SIGTERM shutdown passed."