#!/usr/bin/env bash set -euo pipefail container_name="magent-ci-${GITHUB_RUN_ID:-local}-$$" data_dir="$(mktemp -d)" chmod 0777 "$data_dir" cleanup() { docker rm -f "$container_name" >/dev/null 2>&1 || true rm -rf "$data_dir" } trap cleanup EXIT docker build --tag magent:ci . docker run --detach --name "$container_name" \ --read-only --cap-drop ALL --security-opt no-new-privileges:true \ --tmpfs /tmp:rw,noexec,nosuid,size=64m,uid=1000,gid=1000 \ --tmpfs /app/frontend/.next/cache:rw,noexec,nosuid,size=128m,uid=1000,gid=1000 \ --volume "$data_dir:/app/data" \ --env JWT_SECRET=ci-only-secret-with-at-least-32-characters \ --env SETTINGS_ENCRYPTION_KEY=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= \ --env ADMIN_PASSWORD=ci-only-bootstrap-password-123 \ magent:ci >/dev/null deadline=$((SECONDS + 120)) until [ "$(docker inspect --format '{{.State.Health.Status}}' "$container_name")" = "healthy" ]; do if [ "$SECONDS" -ge "$deadline" ]; then docker logs "$container_name" echo "Container did not become healthy within 120 seconds" >&2 exit 1 fi sleep 2 done docker exec "$container_name" curl --fail --silent --show-error http://127.0.0.1:8000/health >/dev/null docker exec "$container_name" curl --fail --silent --show-error http://127.0.0.1:3000/login >/dev/null