mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-09 14:47:29 +00:00
Refactor build.sh to improve readability and maintainability by defining variables for configuration and adding descriptive echo statements.
This commit is contained in:
45
build.sh
45
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."
|
||||
|
Reference in New Issue
Block a user