diff --git a/build.sh b/build.sh index 847a674..6592579 100644 --- a/build.sh +++ b/build.sh @@ -3,19 +3,44 @@ 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" -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 . -docker build --platform=linux/amd64 -t syncrow-backend . -docker tag syncrow-backend:latest $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/syncrow-backend:latest -docker push $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/syncrow-backend:latest +echo "🏷️ Tagging image..." +docker tag $REPO_NAME:$IMAGE_TAG "$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$REPO_NAME:$IMAGE_TAG" -SERVICE_ARN=$(aws ecs list-services --cluster syncrow-backend-cluster --query 'serviceArns[0]' --output text --region $REGION 2>/dev/null || echo "") +echo "📤 Pushing image to ECR..." +docker push "$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$REPO_NAME:$IMAGE_TAG" -if [ "$SERVICE_ARN" != "" ] && [ "$SERVICE_ARN" != "None" ]; then - SERVICE_NAME=$(echo $SERVICE_ARN | cut -d'/' -f3) - aws ecs update-service --cluster syncrow-backend-cluster --service $SERVICE_NAME --force-new-deployment --region $REGION -else - npx cdk deploy SyncrowBackendStack --context certificateArn=arn:aws:acm:me-central-1:482311766496:certificate/bea1e2ae-84a1-414e-8dbf-4599397e7ed0 --require-approval never +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."