mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-09 22:57:24 +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)
|
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
|
||||||
REGION=${AWS_DEFAULT_REGION:-me-central-1}
|
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 .
|
echo "🏷️ Tagging image..."
|
||||||
docker tag syncrow-backend:latest $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/syncrow-backend:latest
|
docker tag $REPO_NAME:$IMAGE_TAG "$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$REPO_NAME:$IMAGE_TAG"
|
||||||
docker push $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/syncrow-backend:latest
|
|
||||||
|
|
||||||
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
|
echo "🔍 Checking if ECS service exists..."
|
||||||
SERVICE_NAME=$(echo $SERVICE_ARN | cut -d'/' -f3)
|
SERVICE_ARN=$(aws ecs list-services \
|
||||||
aws ecs update-service --cluster syncrow-backend-cluster --service $SERVICE_NAME --force-new-deployment --region $REGION
|
--cluster $CLUSTER_NAME \
|
||||||
else
|
--query 'serviceArns[0]' \
|
||||||
npx cdk deploy SyncrowBackendStack --context certificateArn=arn:aws:acm:me-central-1:482311766496:certificate/bea1e2ae-84a1-414e-8dbf-4599397e7ed0 --require-approval never
|
--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
|
fi
|
||||||
|
|
||||||
|
echo "✅ All done."
|
||||||
|
Reference in New Issue
Block a user