Skip to content

Commit 659f34b

Browse files
authored
Merge pull request #80 from YAPP-Github/feat/T3-205
chore: 프로메테우스 배포 파이프라인 관련 파일 추가
2 parents afa8462 + 87459fe commit 659f34b

File tree

4 files changed

+76
-1
lines changed

4 files changed

+76
-1
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Deploy Prometheus to Amazon ECS
2+
3+
on:
4+
push:
5+
branches: ["release", "develop"]
6+
paths:
7+
- "config/dev/application-prometheus-dev.yml"
8+
- "config/prod/application-prometheus-prod.yml"
9+
- "prometheus/**"
10+
11+
jobs:
12+
deploy-prometheus:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v3
17+
with:
18+
token: ${{ secrets.ACTION_TOKEN }}
19+
submodules: true
20+
21+
- name: Configure AWS credentials
22+
uses: aws-actions/configure-aws-credentials@v2
23+
with:
24+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
25+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
26+
aws-region: ap-northeast-2
27+
28+
- name: Login to Amazon ECR
29+
id: login-ecr
30+
uses: aws-actions/amazon-ecr-login@v1
31+
32+
- name: Set Environment Variables
33+
run: |
34+
if [ "${{ github.ref }}" == "refs/heads/develop" ]; then
35+
echo "ENV=dev" >> $GITHUB_ENV
36+
echo "ECR_REPO=${{ secrets.ECR_REPO_PROMETHEUS_DEV }}" >> $GITHUB_ENV
37+
echo "CONFIG_FILE=config/dev/application-prometheus-dev.yml" >> $GITHUB_ENV
38+
echo "SERVICE_NAME=${{ secrets.ECS_SERVICE_PROMETHEUS_DEV }}" >> $GITHUB_ENV
39+
else
40+
echo "ENV=prod" >> $GITHUB_ENV
41+
echo "ECR_REPO=${{ secrets.ECR_REPO_PROMETHEUS_PROD }}" >> $GITHUB_ENV
42+
echo "CONFIG_FILE=config/prod/application-prometheus-prod.yml" >> $GITHUB_ENV
43+
echo "SERVICE_NAME=${{ secrets.ECS_SERVICE_PROMETHEUS_PROD }}" >> $GITHUB_ENV
44+
fi
45+
46+
- name: Build and Push Prometheus Image
47+
env:
48+
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
49+
run: |
50+
cp ${{ env.CONFIG_FILE }} ./prometheus.yml
51+
IMAGE_TAG=${{ github.sha }}
52+
docker build -t $ECR_REGISTRY/${{ env.ECR_REPO }}:$IMAGE_TAG \
53+
-t $ECR_REGISTRY/${{ env.ECR_REPO }}:${{ env.ENV }} .
54+
docker push $ECR_REGISTRY/${{ env.ECR_REPO }}:$IMAGE_TAG
55+
docker push $ECR_REGISTRY/${{ env.ECR_REPO }}:${{ env.ENV }}
56+
57+
- name: Update ECS Prometheus Service
58+
run: |
59+
aws ecs update-service --cluster ${{ secrets.ECS_CLUSTER_NAME }} \
60+
--service ${{ env.SERVICE_NAME }} \
61+
--force-new-deployment

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ dependencies {
3131
implementation "org.springframework.boot:spring-boot-starter-oauth2-client"
3232
implementation 'org.springframework.boot:spring-boot-starter-validation'
3333
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
34+
implementation 'org.springframework.boot:spring-boot-starter-actuator'
35+
implementation 'io.micrometer:micrometer-registry-prometheus'
3436

3537
// jwt
3638
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'

config

monitoring/Dockerfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# 1. 공식 프로메테우스 이미지를 베이스로 사용
2+
FROM prom/prometheus:latest
3+
4+
# 2. 로컬의 prometheus.yml 파일을 컨테이너 내부의 기본 설정 경로로 복사
5+
# 이 과정이 수행되어야 우리가 작성한 설정이 반영됩니다.
6+
COPY prometheus.yml /etc/prometheus/prometheus.yml
7+
8+
# (선택) 프로메테우스가 데이터를 저장할 경로를 지정 (기본값 사용)
9+
VOLUME [ "/prometheus" ]
10+
11+
# 3. 9090 포트를 외부로 노출하겠다고 명시
12+
#EXPOSE 9090

0 commit comments

Comments
 (0)