diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..847a674 --- /dev/null +++ b/build.sh @@ -0,0 +1,21 @@ +#!/bin/bash +set -e + +ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) +REGION=${AWS_DEFAULT_REGION:-me-central-1} + + +aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com + +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 + +SERVICE_ARN=$(aws ecs list-services --cluster syncrow-backend-cluster --query 'serviceArns[0]' --output text --region $REGION 2>/dev/null || echo "") + +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 +fi diff --git a/package.json b/package.json index ad00d63..8650c99 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./apps/backend/test/jest-e2e.json", "deploy": "./deploy.sh", + "infra:build": "./build.sh", "infra:deploy": "cdk deploy SyncrowBackendStack", "infra:destroy": "cdk destroy SyncrowBackendStack" },