Files
HiveGrid-Wireframes/hivegrid-cloud/scripts/verify-db-migrate-status-staging.sh
T

46 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
: "${COOLIFY_STAGING_SSH_HOST:?COOLIFY_STAGING_SSH_HOST is required}"
: "${COOLIFY_STAGING_WEB_RESOURCE_UUID:?COOLIFY_STAGING_WEB_RESOURCE_UUID is required}"
: "${COOLIFY_STAGING_SSH_KEY:?COOLIFY_STAGING_SSH_KEY is required}"
SSH_USER="${COOLIFY_STAGING_SSH_USER:-root}"
KEY_FILE="$(mktemp)"
KNOWN_HOSTS_FILE="$(mktemp)"
cleanup() {
rm -f "$KEY_FILE" "$KNOWN_HOSTS_FILE"
}
trap cleanup EXIT
printf "%s\n" "$COOLIFY_STAGING_SSH_KEY" > "$KEY_FILE"
chmod 600 "$KEY_FILE"
if command -v ssh-keyscan >/dev/null 2>&1; then
ssh-keyscan -H "$COOLIFY_STAGING_SSH_HOST" > "$KNOWN_HOSTS_FILE" 2>/dev/null || true
fi
SSH_STRICT_OPTIONS=(-o BatchMode=yes -o ConnectTimeout=10 -o UserKnownHostsFile="$KNOWN_HOSTS_FILE")
if [[ -s "$KNOWN_HOSTS_FILE" ]]; then
SSH_STRICT_OPTIONS+=(-o StrictHostKeyChecking=yes)
else
SSH_STRICT_OPTIONS+=(-o StrictHostKeyChecking=accept-new)
fi
ssh -i "$KEY_FILE" "${SSH_STRICT_OPTIONS[@]}" "${SSH_USER}@${COOLIFY_STAGING_SSH_HOST}" \
'bash -s' -- "$COOLIFY_STAGING_WEB_RESOURCE_UUID" <<'REMOTE'
set -euo pipefail
RESOURCE_UUID="$1"
CONTAINER_NAME="$(docker ps --format '{{.Names}}' | grep -E "^${RESOURCE_UUID}-" | head -n 1 || true)"
if [[ -z "$CONTAINER_NAME" ]]; then
echo "No running Coolify web container found for resource ${RESOURCE_UUID}" >&2
exit 1
fi
docker exec "$CONTAINER_NAME" sh -lc 'cd /myapp && pnpm --filter @toolctrl/db prisma:migrate:status'
REMOTE