Skip to content

Commit 1378ee2

Browse files
committed
feat: 모니터링 cicd 분리
1 parent ef7f729 commit 1378ee2

1 file changed

Lines changed: 104 additions & 0 deletions

File tree

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: Deploy to Amazon ECS - Monitoring
2+
3+
# release, develop 브랜치에 푸시되거나 PR이 닫힐 때마다 실행되는 워크플로우입니다.
4+
on:
5+
push:
6+
branches:
7+
- "release"
8+
- "develop"
9+
10+
permissions:
11+
contents: write
12+
pull-requests: write
13+
14+
jobs:
15+
deploy:
16+
runs-on: ubuntu-latest
17+
steps:
18+
19+
# 1. 소스코드 체크아웃(환경변수(yml)가 있는 서브모듈 가져오기)
20+
- name: Checkout
21+
uses: actions/checkout@v3
22+
with:
23+
token: ${{ secrets.ACTION_TOKEN }}
24+
submodules: true
25+
26+
# 2. AWS 자격 증명 구성
27+
- name: Configure AWS credentials
28+
uses: aws-actions/configure-aws-credentials@v2
29+
with:
30+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
31+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
32+
aws-region: ap-northeast-2
33+
34+
# 3. Amazon ECR에 로그인
35+
- name: Login to Amazon ECR
36+
id: login-ecr
37+
uses: aws-actions/amazon-ecr-login@v2
38+
39+
# 4. Prometheus 설정 파일 복사 (환경별)
40+
- name: Prepare Prometheus config - release
41+
if: github.ref == 'refs/heads/release'
42+
run: cp config/prod/application-prometheus-prod.yml ./prometheus.yml
43+
44+
- name: Prepare Prometheus config - develop
45+
if: github.ref == 'refs/heads/develop'
46+
run: cp config/dev/application-prometheus-dev.yml ./prometheus.yml
47+
48+
# 5. Prometheus Docker 이미지 빌드 & 푸시
49+
- name: Build Prometheus image - release
50+
if: github.ref == 'refs/heads/release'
51+
id: build-prometheus-release
52+
run: |
53+
docker build --platform linux/amd64 -f monitoring/Dockerfile -t ${{ secrets.ECR_REPO_NAME_PROMETHEUS_PROD }} .
54+
docker tag ${{ secrets.ECR_REPO_NAME_PROMETHEUS_PROD }}:latest ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.ap-northeast-2.amazonaws.com/${{ secrets.ECR_REPO_NAME_PROMETHEUS_PROD }}:latest
55+
docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.ap-northeast-2.amazonaws.com/${{ secrets.ECR_REPO_NAME_PROMETHEUS_PROD }}:latest
56+
echo "image=${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.ap-northeast-2.amazonaws.com/${{ secrets.ECR_REPO_NAME_PROMETHEUS_PROD }}:latest" >> $GITHUB_OUTPUT
57+
58+
- name: Build Prometheus image - develop
59+
if: github.ref == 'refs/heads/develop'
60+
id: build-prometheus-dev
61+
run: |
62+
docker build --platform linux/amd64 -f monitoring/Dockerfile -t ${{ secrets.ECR_REPO_NAME_PROMETHEUS_DEV }} .
63+
docker tag ${{ secrets.ECR_REPO_NAME_PROMETHEUS_DEV }}:latest ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.ap-northeast-2.amazonaws.com/${{ secrets.ECR_REPO_NAME_PROMETHEUS_DEV }}:latest
64+
docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.ap-northeast-2.amazonaws.com/${{ secrets.ECR_REPO_NAME_PROMETHEUS_DEV }}:latest
65+
echo "image=${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.ap-northeast-2.amazonaws.com/${{ secrets.ECR_REPO_NAME_PROMETHEUS_DEV }}:latest" >> $GITHUB_OUTPUT
66+
67+
# 6. ECS Task Definition에 Prometheus 이미지 주입
68+
- name: Render ECS task definition (monitoring) - release
69+
if: github.ref == 'refs/heads/release'
70+
id: task-def-monitoring-prod
71+
uses: aws-actions/amazon-ecs-render-task-definition@v1
72+
with:
73+
task-definition: task-definition-monitoring-prod.json
74+
container-name: prometheus
75+
image: ${{ steps.build-prometheus-release.outputs.image }}
76+
77+
- name: Render ECS task definition (monitoring) - dev
78+
if: github.ref == 'refs/heads/develop'
79+
id: task-def-monitoring-dev
80+
uses: aws-actions/amazon-ecs-render-task-definition@v1
81+
with:
82+
task-definition: task-definition-monitoring-dev.json
83+
container-name: prometheus
84+
image: ${{ steps.build-prometheus-dev.outputs.image }}
85+
86+
87+
# 7. ECS 서비스 배포
88+
- name: Deploy Monitoring to ECS - release
89+
if: github.ref == 'refs/heads/release'
90+
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
91+
with:
92+
task-definition: ${{ steps.task-def-monitoring-prod.outputs.task-definition }}
93+
service: ${{ secrets.ECS_SERVICE_NAME_PROMETHEUS_PROD}}
94+
cluster: ${{ secrets.ECS_CLUSTER_NAME }}
95+
wait-for-service-stability: true
96+
97+
- name: Deploy Monitoring to ECS - dev
98+
if: github.ref == 'refs/heads/develop'
99+
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
100+
with:
101+
task-definition: ${{ steps.task-def-monitoring-dev.outputs.task-definition }}
102+
service: ${{ secrets.ECS_SERVICE_NAME_PROMETHEUS_DEV }}
103+
cluster: ${{ secrets.ECS_CLUSTER_NAME }}
104+
wait-for-service-stability: true

0 commit comments

Comments
 (0)