FE CI/CD
user_0659028
yaml
8 months ago
2.4 kB
5
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_COUNTEditor is loading...
Leave a Comment