1
+ name : Deploy to ECS
2
+
3
+ on :
4
+ push :
5
+ branches :
6
+ - part2-김경린
7
+
8
+ jobs :
9
+ deploy :
10
+ runs-on : ubuntu-latest
11
+
12
+ steps :
13
+ - name : Checkout code
14
+ uses : actions/checkout@v4
15
+
16
+ - name : Configure AWS credentials for ECR
17
+ uses : aws-actions/configure-aws-credentials@v2
18
+ with :
19
+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY }}
20
+ aws-secret-access-key : ${{ secrets.AWS_SECRET_KEY }}
21
+ aws-region : us-east-1
22
+
23
+ - name : Login to Amazon ECR Public
24
+ run : |
25
+ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/k5f2z7e1
26
+
27
+ - name : Build Docker Image
28
+ run : |
29
+ docker build -t ${{ vars.ECR_REPOSITORY_URI }}:latest .
30
+ docker tag ${{ vars.ECR_REPOSITORY_URI }}:latest ${{ vars.ECR_REPOSITORY_URI }}:${{ github.sha }}
31
+
32
+ - name : Push Docker image to ECR
33
+ run : |
34
+ docker push ${{ vars.ECR_REPOSITORY_URI }}:latest
35
+ docker push ${{ vars.ECR_REPOSITORY_URI }}:${{ github.sha }}
36
+
37
+ - name : Configure AWS credentials for ECS
38
+ uses : aws-actions/configure-aws-credentials@v2
39
+ with :
40
+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY }}
41
+ aws-secret-access-key : ${{ secrets.AWS_SECRET_KEY }}
42
+ aws-region : ${{ vars.AWS_REGION }}
43
+
44
+ - name : Render ECS Task Definition
45
+ uses : aws-actions/amazon-ecs-render-task-definition@v1
46
+ with :
47
+ task-definition : ecs/task-definition.json
48
+ container-name : discodeit-app
49
+ image : ${{ vars.ECR_REPOSITORY_URI }}:latest
50
+
51
+ # aws ecs update-service --desired-count 옵션을 활용하세요.
52
+ - name : Stop current ECS service
53
+ run : |
54
+ aws ecs update-service \
55
+ --cluster ${{ vars.ECS_CLUSTER }} \
56
+ --service ${{ vars.ECS_SERVICE }} \
57
+ --desired-count 0 \
58
+ --region ${{ vars.AWS_REGION }}
59
+
60
+ - name : Deploy updated Task Definition to ECS
61
+ uses : aws-actions/amazon-ecs-deploy-task-definition@v1
62
+ with :
63
+ task-definition : ecs/task-definition.json
64
+ cluster : ${{ vars.ECS_CLUSTER }}
65
+ service : ${{ vars.ECS_SERVICE }}
66
+ wait-for-service-stability : true # 배포 안정화 확인 (헬스체크 통과 시까지 대기)
0 commit comments