bmc_hub/updateto.sh
2026-01-28 07:48:10 +01:00

127 lines
3.5 KiB
Bash

#!/bin/bash
# BMC Hub Production Deployment Script
# Usage: ./updateto.sh v1.3.15
set -e # Exit on any error
VERSION=$1
if [ -z "$VERSION" ]; then
echo "❌ Fejl: Ingen version angivet"
echo "Usage: ./updateto.sh v1.3.15"
exit 1
fi
# SAFETY CHECK: Verify we're on production server
CURRENT_IP=$(hostname -I | awk '{print $1}' 2>/dev/null || echo "unknown")
CURRENT_DIR=$(pwd)
if [[ "$CURRENT_IP" != "172.16.31.183" ]] && [[ "$CURRENT_DIR" != "/srv/podman/bmc_hub_v1.0" ]]; then
echo "⚠️ ADVARSEL: Dette script skal kun køres på PRODUCTION serveren!"
echo " Forventet IP: 172.16.31.183"
echo " Forventet mappe: /srv/podman/bmc_hub_v1.0"
echo " Nuværende IP: $CURRENT_IP"
echo " Nuværende mappe: $CURRENT_DIR"
echo ""
read -p "Er du SIKKER på du vil fortsætte? (skriv 'JA' for at fortsætte): " CONFIRM
if [ "$CONFIRM" != "JA" ]; then
echo "❌ Deployment afbrudt"
exit 1
fi
fi
echo "🚀 Deploying BMC Hub version: $VERSION"
echo "================================"
# Check if .env exists
if [ ! -f ".env" ]; then
echo "❌ Fejl: .env fil ikke fundet"
exit 1
fi
# Load environment variables (DB credentials)
set -a
source .env
set +a
# Update RELEASE_VERSION in .env
echo "📝 Opdaterer .env med version $VERSION..."
if grep -q "^RELEASE_VERSION=" .env; then
# Replace existing line
sed -i.bak "s/^RELEASE_VERSION=.*/RELEASE_VERSION=$VERSION/" .env
else
# Add if missing
echo "RELEASE_VERSION=$VERSION" >> .env
fi
echo "✅ .env opdateret"
# Stop containers
echo ""
echo "⏹️ Stopper containere..."
podman-compose -f docker-compose.prod.yml down
# Pull/rebuild with new version
echo ""
echo "🔨 Bygger nyt image med version $VERSION..."
podman-compose -f docker-compose.prod.yml up -d --build
# Sync migrations from container to host
echo ""
echo "📁 Syncer migrations fra container til host..."
if podman cp bmc-hub-api-prod:/app/migrations ./migrations_temp 2>/dev/null; then
rm -rf ./migrations
mv ./migrations_temp ./migrations
chmod -R 755 ./migrations
echo "✅ Migrations synced"
else
echo "⚠️ Warning: Could not sync migrations (container might not be ready yet)"
fi
# Wait a bit for startup
echo ""
echo "⏳ Venter på container startup..."
sleep 5
# Run database migration
echo ""
echo "🧱 Kører database migrationer..."
if [ -z "$POSTGRES_USER" ] || [ -z "$POSTGRES_DB" ]; then
echo "❌ Fejl: POSTGRES_USER/POSTGRES_DB mangler i .env"
exit 1
fi
for i in {1..10}; do
if podman exec bmc-hub-postgres-prod pg_isready -U "$POSTGRES_USER" >/dev/null 2>&1; then
break
fi
echo "⏳ Venter på postgres... ($i/10)"
sleep 2
done
podman exec -i bmc-hub-postgres-prod psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -f /docker-entrypoint-initdb.d/016_opportunities.sql
echo "✅ Migration 016_opportunities.sql kørt"
# Show logs
echo ""
echo "📋 Logs fra startup:"
echo "================================"
podman logs --tail 50 bmc-hub-api-prod
echo ""
echo "✅ Deployment fuldført!"
echo ""
echo "🔍 Tjek status med:"
echo " podman-compose -f docker-compose.prod.yml ps"
echo " podman logs -f bmc-hub-api-prod"
echo ""
echo "🌐 Test health endpoint:"
echo " curl http://localhost:8000/health"
echo ""
echo "📊 Sync kunder fra e-conomic:"
echo " curl -X POST http://localhost:8000/api/v1/system/sync/economic"
echo ""
echo "🔗 Link vTiger til kunder:"
echo " curl -X POST http://localhost:8000/api/v1/system/sync/vtiger"