diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..9b0e8cb --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,63 @@ +name: Deploy Auth to ECS + +on: + push: + branches: + - main + workflow_dispatch: + +env: + AWS_REGION: ap-northeast-2 + AWS_ACCOUNT_ID: 727452759104 + ECR_REPOSITORY: momentlit/auth + ECS_CLUSTER: default + ECS_SERVICE: momentlit-auth-service + IMAGE_TAG: latest + +jobs: + deploy: + name: Build and Deploy Auth + runs-on: ubuntu-latest + + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v5 + with: + aws-region: ${{ env.AWS_REGION }} + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + - name: Login to Amazon ECR + uses: aws-actions/amazon-ecr-login@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push Docker image + run: | + IMAGE_URI=${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${ECR_REPOSITORY}:${IMAGE_TAG} + + docker buildx build \ + --platform linux/amd64 \ + --provenance=false \ + -t $IMAGE_URI \ + . \ + --push + + - name: Force new ECS deployment + run: | + aws ecs update-service \ + --cluster $ECS_CLUSTER \ + --service $ECS_SERVICE \ + --force-new-deployment \ + --region $AWS_REGION + + - name: Wait for ECS service stable + run: | + aws ecs wait services-stable \ + --cluster $ECS_CLUSTER \ + --services $ECS_SERVICE \ + --region $AWS_REGION \ No newline at end of file