Skip to content

Commit 5754c9d

Browse files
authored
Merge pull request #351 from Team-Smeme/develop
deploy: 실서버v4 배포 (임시)
2 parents 7eca1c3 + 2d4bcec commit 5754c9d

File tree

72 files changed

+1170
-238
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+1170
-238
lines changed

.github/workflows/ci.yml

+6-14
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66

77
jobs:
88
build:
9-
runs-on: ubuntu-20.04
9+
runs-on: ubuntu-latest
1010

1111
steps:
1212
- name: Checkout
@@ -16,30 +16,22 @@ jobs:
1616
uses: actions/setup-java@v3
1717
with:
1818
java-version: 17
19-
distribution: 'temurin'
19+
distribution: 'corretto'
2020
cache: gradle
2121

22-
- name: Create application-secret.yml
23-
run: |
24-
pwd
25-
cd ./smeem-bootstrap/src/main/resources
26-
touch ./application-secret.yml
27-
echo "${{ secrets.APPLICATION_SECRET_YML }}" >> ./application-secret.yml
28-
cat ./application-secret.yml
29-
3022
- name: Configure AWS credentials
3123
uses: aws-actions/configure-aws-credentials@v1
3224
with:
33-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
34-
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
25+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_DEV }}
26+
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY_DEV }}
3527
aws-region: ${{ secrets.AWS_REGION }}
3628

3729
- name: Set FCM_JSON_PATH
38-
run: echo "FCM_JSON_PATH=smeem-output-notification/src/main/resources/firebase-config/smeem_fcm_dev.json" >> $GITHUB_ENV
30+
run: |
31+
echo "FCM_JSON_PATH=smeem-output-notification/src/main/resources/firebase-config/smeem_fcm_dev.json" >> $GITHUB_ENV
3932
4033
- name: Create FireBase JSON file From AWS
4134
run: aws s3 cp --region ap-northeast-2 ${{ secrets.AWS_S3_FCM_JSON_URI_DEV }} ${{ env.FCM_JSON_PATH }}
42-
4335
- name: Grant execute permission for gradlew
4436
run: chmod +x ./gradlew
4537
shell: bash

.github/workflows/deploy-dev.yml

+44-45
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,75 @@
1-
name: deploy-dev
1+
name: CD-dev
22

33
on:
44
release:
5-
types: [ published ]
5+
types: [ "published" ]
66

77
jobs:
8-
build:
9-
runs-on: ubuntu-20.04
8+
deploy-ci:
9+
runs-on: ubuntu-latest
1010

1111
steps:
12-
- name: Checkout
12+
- name: Checkout Latest Repo
1313
uses: actions/checkout@v3
14+
# 최신 저장소에서 체크아웃
1415

1516
- name: Set up JDK 17
1617
uses: actions/setup-java@v3
1718
with:
18-
java-version: 17
19-
distribution: 'temurin'
20-
cache: gradle
19+
distribution: 'corretto'
20+
java-version: '17'
21+
# 자바 버전을 JDK 17로 설정
2122

22-
- name: Create application-secret.yml
23-
run: |
24-
pwd
25-
cd ./smeem-bootstrap/src/main/resources
26-
touch ./application-secret.yml
27-
echo "${{ secrets.APPLICATION_SECRET_YML }}" >> ./application-secret.yml
28-
cat ./application-secret.yml
29-
30-
- name: Configure AWS credentials
23+
- name: Configure AWS Credentials
3124
uses: aws-actions/configure-aws-credentials@v1
3225
with:
33-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
34-
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
35-
aws-region: ${{ secrets.AWS_REGION }}
26+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_DEV }}
27+
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY_DEV }}
28+
aws-region: ap-northeast-2
29+
# AWS 자격 증명 설정
3630

37-
- name: Set FCM_JSON_PATH
38-
run: echo "FCM_JSON_PATH=smeem-output-notification/src/main/resources/firebase-config/smeem_fcm_dev.json" >> $GITHUB_ENV
31+
- name: Set FCM JSON File Path
32+
run: |
33+
echo "FCM_JSON_PATH=smeem-output-notification/src/main/resources/firebase-config/smeem_fcm_dev.json" >> $GITHUB_ENV
34+
# FCM JSON 파일 위치 경로 설정
3935

40-
- name: Create FireBase JSON file From AWS
36+
- name: Create FCM JSON File from AWS
4137
run: aws s3 cp --region ap-northeast-2 ${{ secrets.AWS_S3_FCM_JSON_URI_DEV }} ${{ env.FCM_JSON_PATH }}
38+
# FCM JSON 파일 복사
39+
40+
- name: Grant execute permission for gradlew
41+
run: chmod +x gradlew
42+
shell: bash
43+
# gradlew 파일에 실행 권한 부여
4244

4345
- name: Build with Gradle
44-
run: |
45-
chmod +x ./gradlew
46-
./gradlew build -x test
46+
run: ./gradlew clean build -x test
4747
shell: bash
48+
# 그래들로 빌드
4849

49-
- name: Set docker
50+
- name: Set Docker
5051
uses: docker/[email protected]
52+
# 도커 설정
5153

52-
- name: Login docker
54+
- name: Login Docker
5355
uses: docker/[email protected]
5456
with:
5557
username: ${{ secrets.DOCKERHUB_LOGIN_USERNAME_DEV }}
5658
password: ${{ secrets.DOCKERHUB_LOGIN_ACCESSTOKEN_DEV }}
59+
# 도커에 로그인
5760

58-
- name: Build docker image
61+
- name: Docker Build
5962
run: |
6063
docker build --platform linux/amd64 -t smeemdev/smeem-dev:latest -f Dockerfile-dev .
6164
docker push smeemdev/smeem-dev:latest
6265
6366
deploy-cd:
64-
needs: build
65-
runs-on: ubuntu-20.04
67+
needs: deploy-ci
68+
runs-on: ubuntu-latest
69+
# deploy-ci 이후 작업 실행
6670

6771
steps:
68-
- name: SSH로 서버 접속
72+
- name: Connect to EC2 and Deploy
6973
uses: appleboy/ssh-action@master
7074
with:
7175
host: ${{ secrets.RELEASE_SERVER_IP_DEV }}
@@ -78,19 +82,14 @@ jobs:
7882
wget https://raw.githubusercontent.com/Team-Smeme/Smeme-server-renewal/develop/script/deploy.sh -O deploy.sh
7983
chmod +x deploy.sh
8084
81-
# .env 파일 추가
82-
if ! grep -q "REGISTRY_URL=" .env; then
83-
echo "REGISTRY_URL=${{ secrets.REGISTRY_URL_DEV }}" >> .env
84-
fi
85-
if ! grep -q "IMAGE_NAME=" .env; then
86-
echo "IMAGE_NAME=${{ secrets.IMAGE_NAME_DEV }}" >> .env
87-
fi
88-
if ! grep -q "SECRET_MANAGER_TOKEN=" .env; then
89-
echo "SECRET_MANAGER_TOKEN=${{ secrets.SECRET_MANAGER_TOKEN }}" >> .env
90-
fi
91-
if ! grep -q "SECRET_MANAGER_WORKSPACE_ID=" .env; then
92-
echo "SECRET_MANAGER_WORKSPACE_ID=${{ secrets.SECRET_MANAGER_WORKSPACE_ID }}" >> .env
93-
fi
85+
# 기존 .env 파일 삭제 및 새로 생성
86+
rm -f .env # 기존 .env 파일을 삭제합니다.
87+
88+
# .env 파일 새로 생성
89+
echo "REGISTRY_URL=${{ secrets.REGISTRY_URL_DEV }}" >> .env
90+
echo "IMAGE_NAME=${{ secrets.IMAGE_NAME_DEV }}" >> .env
91+
echo "SECRET_MANAGER_TOKEN=${{ secrets.SECRET_MANAGER_TOKEN }}" >> .env
92+
echo "SECRET_MANAGER_WORKSPACE_ID=${{ secrets.SECRET_MANAGER_WORKSPACE_ID }}" >> .env
9493
9594
# 배포 스크립트 실행
9695
sudo ./deploy.sh

.github/workflows/deploy-prod.yml

+41-42
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,75 @@
1-
name: deploy-prod
1+
name: CD-prod
22

33
on:
44
push:
55
branches: [ main ]
66

77
jobs:
8-
build:
9-
runs-on: ubuntu-20.04
8+
deploy-ci:
9+
runs-on: ubuntu-latest
1010

1111
steps:
12-
- name: Checkout
12+
- name: Checkout Latest Repo
1313
uses: actions/checkout@v3
14+
# 최신 저장소에서 체크아웃
1415

1516
- name: Set up JDK 17
1617
uses: actions/setup-java@v3
1718
with:
18-
java-version: 17
19-
distribution: 'temurin'
20-
cache: gradle
19+
distribution: 'corretto'
20+
java-version: '17'
21+
# 자바 버전을 JDK 17로 설정
2122

22-
- name: Create application-secret.yml
23-
run: |
24-
pwd
25-
cd ./smeem-bootstrap/src/main/resources
26-
touch ./application-secret.yml
27-
echo "${{ secrets.APPLICATION_SECRET_YML }}" >> ./application-secret.yml
28-
cat ./application-secret.yml
29-
30-
- name: Configure AWS credentials
23+
- name: Configure AWS Credentials
3124
uses: aws-actions/configure-aws-credentials@v1
3225
with:
3326
aws-access-key-id: ${{ secrets.AWS_PROD_ACCESS_KEY }}
3427
aws-secret-access-key: ${{ secrets.AWS_PROD_SECRET_KEY }}
35-
aws-region: ${{ secrets.AWS_REGION }}
28+
aws-region: ap-northeast-2
29+
# AWS 자격 증명 설정
3630

37-
- name: Set FCM_JSON_PATH
38-
run: echo "FCM_JSON_PATH=smeem-output-notification/src/main/resources/firebase-config/smeem_fcm_prod.json" >> $GITHUB_ENV
31+
- name: Set FCM JSON File Path
32+
run: |
33+
echo "FCM_JSON_PATH=smeem-output-notification/src/main/resources/firebase-config/smeem_fcm_prod.json" >> $GITHUB_ENV
34+
# FCM JSON 파일 위치 경로 설정
3935

40-
- name: Create FireBase JSON file From AWS
36+
- name: Create FCM JSON File from AWS
4137
run: aws s3 cp --region ap-northeast-2 ${{ secrets.AWS_S3_FCM_JSON_URI_PROD }} ${{ env.FCM_JSON_PATH }}
38+
# FCM JSON 파일 복사
39+
40+
- name: Grant execute permission for gradlew
41+
run: chmod +x gradlew
42+
shell: bash
43+
# gradlew 파일에 실행 권한 부여
4244

4345
- name: Build with Gradle
44-
run: |
45-
chmod +x ./gradlew
46-
./gradlew build -x test
46+
run: ./gradlew clean build -x test
4747
shell: bash
48+
# 그래들로 빌드
4849

49-
- name: Set docker
50+
- name: Set Docker
5051
uses: docker/[email protected]
52+
# 도커 설정
5153

52-
- name: Login docker
54+
- name: Login Docker
5355
uses: docker/[email protected]
5456
with:
5557
username: ${{ secrets.DOCKERHUB_LOGIN_USERNAME_PROD }}
5658
password: ${{ secrets.DOCKERHUB_LOGIN_ACCESSTOKEN_PROD }}
59+
# 도커에 로그인
5760

58-
- name: Build docker image
61+
- name: Docker Build
5962
run: |
6063
docker build --platform linux/amd64 -t smeemprod/smeem-prod:latest -f Dockerfile-prod .
6164
docker push smeemprod/smeem-prod:latest
6265
6366
deploy-cd:
64-
needs: build
65-
runs-on: ubuntu-20.04
67+
needs: deploy-ci
68+
runs-on: ubuntu-latest
69+
# deploy-ci 이후 작업 실행
6670

6771
steps:
68-
- name: SSH로 서버 접속
72+
- name: Connect to EC2 and Deploy
6973
uses: appleboy/ssh-action@master
7074
with:
7175
host: ${{ secrets.RELEASE_SERVER_IP_PROD }}
@@ -78,19 +82,14 @@ jobs:
7882
wget https://raw.githubusercontent.com/Team-Smeme/Smeme-server-renewal/main/script/deploy.sh -O deploy.sh
7983
chmod +x deploy.sh
8084
81-
# .env 파일 추가
82-
if ! grep -q "REGISTRY_URL=" .env; then
83-
echo "REGISTRY_URL=${{ secrets.REGISTRY_URL_PROD }}" >> .env
84-
fi
85-
if ! grep -q "IMAGE_NAME=" .env; then
86-
echo "IMAGE_NAME=${{ secrets.IMAGE_NAME_PROD }}" >> .env
87-
fi
88-
if ! grep -q "SECRET_MANAGER_TOKEN=" .env; then
89-
echo "SECRET_MANAGER_TOKEN=${{ secrets.SECRET_MANAGER_TOKEN }}" >> .env
90-
fi
91-
if ! grep -q "SECRET_MANAGER_WORKSPACE_ID=" .env; then
92-
echo "SECRET_MANAGER_WORKSPACE_ID=${{ secrets.SECRET_MANAGER_WORKSPACE_ID }}" >> .env
93-
fi
85+
# 기존 .env 파일 삭제 및 새로 생성
86+
rm -f .env # 기존 .env 파일을 삭제합니다.
87+
88+
# .env 파일 새로 생성
89+
echo "REGISTRY_URL=${{ secrets.REGISTRY_URL_PROD }}" >> .env
90+
echo "IMAGE_NAME=${{ secrets.IMAGE_NAME_PROD }}" >> .env
91+
echo "SECRET_MANAGER_TOKEN=${{ secrets.SECRET_MANAGER_TOKEN }}" >> .env
92+
echo "SECRET_MANAGER_WORKSPACE_ID=${{ secrets.SECRET_MANAGER_WORKSPACE_ID }}" >> .env
9493
9594
# 배포 스크립트 실행
9695
sudo ./deploy.sh

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
## Architecture
1010
### Server Architecture
11-
<img alt="image" width="600" src="https://github.com/user-attachments/assets/fb290cc9-1f98-4536-b4cb-c7fb5b421580"/>
11+
<img width="900" alt="image" src="https://github.com/user-attachments/assets/11e56163-abaa-47c6-af1c-e677897e12cd">
1212

1313
<br/>
1414

build.gradle

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
plugins {
22
id 'java'
3-
id 'org.springframework.boot' version '3.2.1'
3+
id 'org.springframework.boot' version '3.3.4'
44
id 'io.spring.dependency-management' version '1.1.4'
55
id 'application'
66
}
@@ -12,6 +12,8 @@ allprojects {
1212

1313
repositories {
1414
mavenCentral()
15+
maven { url 'https://repo.spring.io/milestone' }
16+
maven { url 'https://repo.spring.io/snapshot' }
1517
}
1618
}
1719

docker/monitoring/docker-compose.yml

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
version: '3.8'
2+
3+
services:
4+
prometheus:
5+
image: prom/prometheus:latest
6+
container_name: prometheus
7+
volumes:
8+
- ./prometheus.yml:/etc/prometheus/prometheus.yml
9+
command:
10+
- --config.file=/etc/prometheus/prometheus.yml
11+
ports:
12+
- "9090:9090"
13+
networks:
14+
- monitoring-network
15+
16+
grafana:
17+
image: grafana/grafana:latest
18+
container_name: grafana
19+
ports:
20+
- "3000:3000"
21+
networks:
22+
- monitoring-network
23+
24+
networks:
25+
monitoring-network:
26+
driver: bridge

docker/monitoring/prometheus.yml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
global:
2+
scrape_interval: 15s
3+
4+
scrape_configs:
5+
- job_name: prometheus
6+
metrics_path: '/actuator/prometheus'
7+
static_configs:
8+
- targets: ['host.docker.internal:8080']

0 commit comments

Comments
 (0)