All checks were successful
Monorepo Pipeline / 🧪 Quality Assurance (push) Successful in 2m12s
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Successful in 18s
Monorepo Pipeline / 🚀 Release (push) Successful in 2m17s
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Successful in 2m13s
Monorepo Pipeline / 🐳 Build Production Runtime (push) Successful in 17s
Monorepo Pipeline / 🐳 Build Build-Base (push) Successful in 5m27s
72 lines
2.4 KiB
Bash
Executable File
72 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Configuration
|
|
PROJECT="infra-cms"
|
|
LOCAL_SCHEMA_PATH="./packages/cms-infra/schema/snapshot.yaml"
|
|
REMOTE_HOST="root@infra.mintel.me"
|
|
REMOTE_DIR="/opt/infra/directus"
|
|
|
|
ENV=$1
|
|
|
|
if [ -z "$ENV" ]; then
|
|
echo "Usage: ./scripts/cms-apply.sh [local|infra]"
|
|
exit 1
|
|
fi
|
|
|
|
case $ENV in
|
|
local)
|
|
PROJECT="infra-cms"
|
|
CMD_PREFIX="docker-compose -f packages/cms-infra/docker-compose.yml"
|
|
|
|
LOCAL_CONTAINER=$($CMD_PREFIX ps -q $PROJECT)
|
|
if [ -z "$LOCAL_CONTAINER" ]; then
|
|
echo "❌ Local $PROJECT container not found. Is it running?"
|
|
exit 1
|
|
fi
|
|
|
|
echo "🚀 Applying schema to LOCAL $PROJECT..."
|
|
docker exec "$LOCAL_CONTAINER" npx directus schema apply -y /directus/schema/snapshot.yaml
|
|
;;
|
|
infra)
|
|
# 'infra' is the remote production server for at-mintel
|
|
PROJECT="directus" # Remote project name
|
|
|
|
echo "🔍 Detecting remote container..."
|
|
REMOTE_CONTAINER=$(ssh "$REMOTE_HOST" "docker ps --filter label=com.docker.compose.project=$PROJECT --filter label=com.docker.compose.service=directus -q")
|
|
|
|
if [ -z "$REMOTE_CONTAINER" ]; then
|
|
# Fallback to older name if labels fail
|
|
REMOTE_CONTAINER=$(ssh "$REMOTE_HOST" "docker ps -f name=directus-directus-1 -q")
|
|
fi
|
|
|
|
if [ -z "$REMOTE_CONTAINER" ]; then
|
|
echo "❌ Remote container for $ENV not found."
|
|
exit 1
|
|
fi
|
|
|
|
echo "📦 Syncing extensions to REMOTE $ENV..."
|
|
# Ensure remote directory exists
|
|
ssh "$REMOTE_HOST" "mkdir -p $REMOTE_DIR/extensions"
|
|
rsync -avz --delete ./packages/cms-infra/extensions/ "$REMOTE_HOST:$REMOTE_DIR/extensions/"
|
|
|
|
echo "📤 Injecting snapshot directly into container $REMOTE_CONTAINER..."
|
|
# Inject file via stdin to avoid needing a host-side mount or scp path matching
|
|
ssh "$REMOTE_HOST" "docker exec -i $REMOTE_CONTAINER sh -c 'cat > /tmp/snapshot.yaml'" < "$LOCAL_SCHEMA_PATH"
|
|
|
|
echo "🚀 Applying schema to REMOTE $ENV..."
|
|
ssh "$REMOTE_HOST" "docker exec $REMOTE_CONTAINER npx directus schema apply -y /tmp/snapshot.yaml"
|
|
|
|
echo "🔄 Restarting remote Directus to clear cache..."
|
|
ssh "$REMOTE_HOST" "cd $REMOTE_DIR && docker compose restart directus"
|
|
|
|
# Cleanup
|
|
ssh "$REMOTE_HOST" "docker exec $REMOTE_CONTAINER rm /tmp/snapshot.yaml"
|
|
;;
|
|
*)
|
|
echo "❌ Invalid environment: $ENV. Supported: local, infra."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo "✨ Schema apply complete!"
|