ci: add GitHub Actions test workflow
This commit is contained in:
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
server_log="${RUNNER_TEMP:-${TMPDIR:-/tmp}}/xinfra-server.log"
|
||||
server_pid=""
|
||||
|
||||
cleanup() {
|
||||
if [[ -n "${server_pid}" ]] && kill -0 "${server_pid}" 2>/dev/null; then
|
||||
kill "${server_pid}" 2>/dev/null || true
|
||||
wait "${server_pid}" 2>/dev/null || true
|
||||
fi
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
echo "Starting backend; log: ${server_log}"
|
||||
go run ./cmd/server >"${server_log}" 2>&1 &
|
||||
server_pid=$!
|
||||
|
||||
ready=false
|
||||
for attempt in $(seq 1 30); do
|
||||
if curl --fail --silent --show-error http://127.0.0.1:8080/readyz >/tmp/xinfra-readyz.json; then
|
||||
echo "Backend is ready after ${attempt} attempt(s)."
|
||||
ready=true
|
||||
break
|
||||
fi
|
||||
|
||||
if ! kill -0 "${server_pid}" 2>/dev/null; then
|
||||
echo "Backend exited before becoming ready."
|
||||
cat "${server_log}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sleep 2
|
||||
|
||||
done
|
||||
|
||||
if [[ "${ready}" != true ]]; then
|
||||
echo "Backend did not become ready within the timeout."
|
||||
cat "${server_log}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! curl --fail --silent --show-error http://127.0.0.1:8080/readyz | grep -q '"status":"ok"'; then
|
||||
echo "Backend readiness check did not return status=ok."
|
||||
cat /tmp/xinfra-readyz.json || true
|
||||
cat "${server_log}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
curl --fail --silent --show-error http://127.0.0.1:8080/healthz | grep -q '"status":"ok"'
|
||||
curl --fail --silent --show-error http://127.0.0.1:8080/api/v1/ping | grep -q '"code":0'
|
||||
|
||||
echo "Backend integration smoke test passed."
|
||||
Reference in New Issue
Block a user