FE CI/CD

 avatar
user_0659028
yaml
20 days ago
2.4 kB
4
Indexable
name: Build, Push Docker Image to ECR and Update ECS Service

on:
  push:
    tags:
      - '*'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Set up AWS CLI
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ secrets.AWS_REGION }}

      - name: Log in to Amazon ECR
        run: |
          aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | \
          docker login --username AWS --password-stdin ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com

      - name: Build Docker image
        run: docker build --rm --no-cache -f Dockerfile -t ${{ secrets.ECR_REPOSITORY }} .

      - name: Tag Docker image
        run: |
          docker tag ${{ secrets.ECR_REPOSITORY }}:latest \
          ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/${{ secrets.ECR_REPOSITORY }}:latest

      - name: Push Docker image to ECR
        run: |
          docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/${{ secrets.ECR_REPOSITORY }}:latest

      - name: Get current desired count of ECS service
        id: get_desired_count
        run: |
          CURRENT_DESIRED_COUNT=$(aws ecs describe-services \
          --cluster ${{ secrets.ECS_CLUSTER_NAME }} \
          --services ${{ secrets.ECS_SERVICE_NAME }} \
          --query "services[0].desiredCount" \
          --output text)
          echo "CURRENT_DESIRED_COUNT=$CURRENT_DESIRED_COUNT" >> $GITHUB_ENV

      - name: Scale down ECS service to 0
        run: |
          aws ecs update-service \
          --cluster ${{ secrets.ECS_CLUSTER_NAME }} \
          --service ${{ secrets.ECS_SERVICE_NAME }} \
          --desired-count 0

      - name: Wait for ECS service to scale down
        run: sleep 10

      - name: Scale up ECS service to original desired count
        run: |
          aws ecs update-service \
          --cluster ${{ secrets.ECS_CLUSTER_NAME }} \
          --service ${{ secrets.ECS_SERVICE_NAME }} \
          --desired-count $CURRENT_DESIRED_COUNT
Editor is loading...
Leave a Comment