haumdaucher_de/deploy.sh

56 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# Configuration
NAMESPACE="haumdaucher"
REGISTRY="registry.haumdaucher.de"
IMAGE_BASE_NAME="haumdaucher-website"
IMAGE_NAME="$REGISTRY/$IMAGE_BASE_NAME"
TAG="latest"
echo "🚀 Starting deployment for Haumdaucher..."
# Create namespace if it doesn't exist
kubectl create namespace $NAMESPACE --dry-run=client -o yaml | kubectl apply -f -
# Build the docker image
echo "📦 Building Docker image..."
# Try to fetch Firebase config from Terraform
if [ -d "terraform" ] && [ -f "terraform/terraform.tfstate" ]; then
echo "🔍 Detected Terraform state. Fetching Firebase config..."
cd terraform
TF_OUT=$(terraform output -json firebase_config 2>/dev/null)
cd ..
if [ ! -z "$TF_OUT" ]; then
echo "✅ Firebase config found."
FIREBASE_ARGS=(
--build-arg VITE_FIREBASE_API_KEY=$(echo $TF_OUT | jq -r .apiKey)
--build-arg VITE_FIREBASE_AUTH_DOMAIN=$(echo $TF_OUT | jq -r .authDomain)
--build-arg VITE_FIREBASE_PROJECT_ID=$(echo $TF_OUT | jq -r .projectId)
--build-arg VITE_FIREBASE_STORAGE_BUCKET=$(echo $TF_OUT | jq -r .storageBucket)
--build-arg VITE_FIREBASE_MESSAGING_SENDER_ID=$(echo $TF_OUT | jq -r .messagingSenderId)
--build-arg VITE_FIREBASE_APP_ID=$(echo $TF_OUT | jq -r .appId)
)
else
echo "⚠️ Terraform output 'firebase_config' not found. Ensure required env vars are set."
fi
fi
docker build -t $IMAGE_NAME:$TAG "${FIREBASE_ARGS[@]}" .
# Push the docker image
echo "📤 Pushing Docker image to $REGISTRY..."
docker push $IMAGE_NAME:$TAG
# Apply manifests
echo "🎡 Applying Kubernetes manifests..."
kubectl apply -f k8s-manifests.yaml
# Force rollout restart to pick up the new 'latest' image
echo "🔄 Restarting deployment to pull latest image..."
kubectl rollout restart deployment/haumdaucher-website -n $NAMESPACE
echo "✅ Deployment complete!"
echo "Check status with: kubectl get pods -n $NAMESPACE"