mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-10 05:42:49 +00:00
63 lines
1.7 KiB
Bash
Executable File
63 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Upgrades the 2.8 fixture install to 2.9.0 on real Postgres and MySQL
|
|
# servers and runs the same checks the SQLite upgrade test runs.
|
|
#
|
|
# Needs Docker and a built tree (npm run build). Run from anywhere:
|
|
# bash scripts/upgrade-check.sh # both engines
|
|
# bash scripts/upgrade-check.sh postgres # one engine
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
COMPOSE=(docker compose -f "$ROOT/scripts/upgrade-check.compose.yml")
|
|
TAG="release-2.8.0-tag"
|
|
if [ "$#" -gt 0 ]; then
|
|
DIALECTS=("$@")
|
|
else
|
|
DIALECTS=(postgres mysql)
|
|
fi
|
|
|
|
cd "$ROOT"
|
|
|
|
if [ ! -f dist/plugins/snippets/dist/backend.js ]; then
|
|
echo "dist/plugins is missing. Run npm run build first." >&2
|
|
exit 1
|
|
fi
|
|
if ! git rev-parse -q --verify "refs/tags/$TAG" >/dev/null; then
|
|
echo "Tag $TAG is missing. Run git fetch --tags first." >&2
|
|
exit 1
|
|
fi
|
|
|
|
LEGACY="$(mktemp -d)"
|
|
cleanup() {
|
|
"${COMPOSE[@]}" down -v >/dev/null 2>&1 || true
|
|
rm -rf "$LEGACY"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
# 2.8's own drizzle migrations build the 2.8 schema on each server.
|
|
git archive "$TAG" drizzle | tar -x -C "$LEGACY"
|
|
|
|
"${COMPOSE[@]}" up -d --wait
|
|
|
|
status=0
|
|
for dialect in "${DIALECTS[@]}"; do
|
|
case "$dialect" in
|
|
postgres) url="postgres://termix:termix@127.0.0.1:55433/termix" ;;
|
|
mysql) url="mysql://root:termix@127.0.0.1:33307/termix" ;;
|
|
*)
|
|
echo "Unknown dialect $dialect (postgres or mysql)" >&2
|
|
exit 2
|
|
;;
|
|
esac
|
|
echo
|
|
echo "== 2.8 to 2.9.0 on $dialect"
|
|
if ! TEST_DIALECT="$dialect" TEST_DATABASE_URL="$url" \
|
|
UPGRADE_LEGACY_MIGRATIONS_DIR="$LEGACY/drizzle" \
|
|
npx vitest run src/backend/tests/plugins/upgrade-fixture.test.ts \
|
|
--project backend; then
|
|
status=1
|
|
fi
|
|
done
|
|
|
|
exit "$status"
|