46 lines
1.4 KiB
Bash
Executable File
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
|