#!/usr/bin/env bash # Flyway validate using migration files from repo root; JDBC from env (staging / CI DB). # Env: EMS_CI_FLYWAY_URL — if unset, skips (warn). Optional: EMS_CI_FLYWAY_USER, EMS_CI_FLYWAY_PASSWORD, FLYWAY_IMAGE set -euo pipefail if [[ -z "${EMS_CI_FLYWAY_URL:-}" ]]; then echo "WARN: EMS_CI_FLYWAY_URL not set — skipping remote Flyway validate (set Gitea secret for CI)." exit 0 fi ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)" cd "$ROOT" IMG="${FLYWAY_IMAGE:-flyway/flyway:12}" args=( run --rm -v "$ROOT/db/migration:/flyway/sql/migration" -v "$ROOT/db/routines:/flyway/sql/routines" -v "$ROOT/db/views:/flyway/sql/views" -e "FLYWAY_URL=${EMS_CI_FLYWAY_URL}" -e "FLYWAY_SCHEMAS=ems" -e "FLYWAY_LOCATIONS=filesystem:/flyway/sql/migration,filesystem:/flyway/sql/routines,filesystem:/flyway/sql/views" ) if [[ -n "${EMS_CI_FLYWAY_USER:-}" ]]; then args+=(-e "FLYWAY_USER=${EMS_CI_FLYWAY_USER}") fi if [[ -n "${EMS_CI_FLYWAY_PASSWORD:-}" ]]; then args+=(-e "FLYWAY_PASSWORD=${EMS_CI_FLYWAY_PASSWORD}") fi args+=("$IMG" validate) echo "Running Flyway validate against remote DB (schema ems)…" docker "${args[@]}"