#!/bin/bash set -e ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=${AWS_DEFAULT_REGION:-me-central-1} REPO_NAME=syncrow-backend IMAGE_TAG=latest CLUSTER_NAME=syncrow-backend-cluster STACK_NAME=SyncrowBackendStack CERTIFICATE_ARN="arn:aws:acm:$REGION:$ACCOUNT_ID:certificate/bea1e2ae-84a1-414e-8dbf-4599397e7ed0" echo "🔐 Logging into ECR..." aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin "$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com" echo "🐳 Building Docker image..." docker build --platform=linux/amd64 -t $REPO_NAME . echo "🏷️ Tagging image..." docker tag $REPO_NAME:$IMAGE_TAG "$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$REPO_NAME:$IMAGE_TAG" echo "📤 Pushing image to ECR..." docker push "$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$REPO_NAME:$IMAGE_TAG" echo "🔍 Checking if ECS service exists..." SERVICE_ARN=$(aws ecs list-services \ --cluster $CLUSTER_NAME \ --query 'serviceArns[0]' \ --output text \ --region $REGION 2>/dev/null || echo "") echo "📦 Deploying CDK Stack..." npx cdk deploy $STACK_NAME \ --context certificateArn=$CERTIFICATE_ARN \ --require-approval never if [[ "$SERVICE_ARN" != "" && "$SERVICE_ARN" != "None" ]]; then SERVICE_NAME=$(basename "$SERVICE_ARN") echo "🚀 Redeploying ECS Service: $SERVICE_NAME" aws ecs update-service \ --cluster $CLUSTER_NAME \ --service $SERVICE_NAME \ --force-new-deployment \ --region $REGION fi echo "✅ All done."