#!/bin/bash set -euo pipefail APP_NAME="apskel-pos" # ─── Deteksi environment dari branch aktif ─────────────────────────────────── CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) case "$CURRENT_BRANCH" in main) ENV_MODE="production" PORT="4000" ;; staging) ENV_MODE="staging" PORT="4001" ;; *) echo "❌ Branch '$CURRENT_BRANCH' tidak dikenali untuk deployment." echo " Gunakan branch 'main' (production) atau 'staging' (staging)." exit 1 ;; esac CONTAINER_NAME="$APP_NAME-$ENV_MODE" IMAGE_NAME="$APP_NAME:$ENV_MODE" echo "📦 Environment : $ENV_MODE" echo "🌿 Branch : $CURRENT_BRANCH" echo "🐳 Container : $CONTAINER_NAME" echo "🔌 Port : $PORT" echo "" # ─── Pastikan config file ada ───────────────────────────────────────────────── CONFIG_FILE="infra/$ENV_MODE.yaml" if [ ! -f "$CONFIG_FILE" ]; then echo "❌ Config file '$CONFIG_FILE' tidak ditemukan." exit 1 fi echo "🔄 Pulling latest code..." git pull echo "🐳 Building Docker image ($ENV_MODE)..." docker build --target production -t "$IMAGE_NAME" . echo "🛑 Stopping and removing old container..." docker rm -f "$CONTAINER_NAME" 2>/dev/null || true echo "🚀 Running new container..." docker run -d --name "$CONTAINER_NAME" \ -p "$PORT:4000" \ -e TZ=Asia/Jakarta \ -e ENV_MODE="$ENV_MODE" \ -v "$(pwd)/infra":/infra:ro \ -v "$(pwd)/templates":/templates:ro \ "$IMAGE_NAME" echo "" echo "✅ Deployment $ENV_MODE complete." echo " Container : $CONTAINER_NAME" echo " Port : $PORT"