Skip to content

Commit d276e5b

Browse files
authored
Merge pull request #3 from Team-Drinkly/develop
Develop
2 parents c41a8f6 + 028ac3d commit d276e5b

12 files changed

Lines changed: 223 additions & 154 deletions

File tree

.github/ISSUE_TEMPLATE/ci.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: "CI/CD"
3+
about: 배포 작업 템플릿입니다.
4+
title: "ci/cd: "
5+
labels: ci
6+
assignees: ''
7+
8+
---
9+
10+
# Title
11+
12+
- title
13+
14+
# TODO
15+
16+
- [ ] write what to do
17+
18+
# etc
19+
20+
- nothing

.github/ISSUE_TEMPLATE/docs.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: "DOCS"
3+
about: 문서 작업 템플릿입니다.
4+
title: "docs: "
5+
labels: docs
6+
assignees: ''
7+
8+
---
9+
10+
# Title
11+
12+
- title
13+
14+
# TODO
15+
16+
- [ ] write what to do
17+
18+
# etc
19+
20+
- nothing

.github/ISSUE_TEMPLATE/feat.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: "FEAT"
3+
about: 기능 개발 템플릿입니다.
4+
title: "feat: "
5+
labels: feat
6+
assignees: ''
7+
8+
---
9+
10+
# Title
11+
12+
- title
13+
14+
# TODO
15+
16+
- [ ] write what to do
17+
18+
# etc
19+
20+
- nothing

.github/ISSUE_TEMPLATE/fix.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: "FIX"
3+
about: 버그 수정 템플릿입니다.
4+
title: "fix: "
5+
labels: fix
6+
assignees: ''
7+
8+
---
9+
10+
# Title
11+
12+
- title
13+
14+
# TODO
15+
16+
- [ ] write what to do
17+
18+
# etc
19+
20+
- nothing

.github/ISSUE_TEMPLATE/refactor.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: "REFACTOR"
3+
about: 리팩토링 템플릿입니다.
4+
title: "️refactor: "
5+
labels: refactor
6+
assignees: ''
7+
8+
---
9+
10+
# Title
11+
12+
- title
13+
14+
# TODO
15+
16+
- [ ] write what to do
17+
18+
# etc
19+
20+
- nothing

.github/ISSUE_TEMPLATE/test.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: "TEST"
3+
about: 테스트 작업 템플릿입니다.
4+
title: "test: "
5+
labels: test
6+
assignees: ''
7+
8+
---
9+
10+
# Title
11+
12+
- title
13+
14+
# TODO
15+
16+
- [ ] write what to do
17+
18+
# etc
19+
20+
- nothing

.github/workflows/deploy.yml

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: CI/CD with Git Actions & Docker Hub test
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- master
7+
- develop
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
env:
14+
SPRING_PROFILE: ${{ github.base_ref == 'master' && 'prod' || 'dev' }}
15+
PRIVATE_IP: ${{ github.base_ref == 'master' && secrets.PRIVATE_IP || secrets.DEV_PRIVATE_IP }}
16+
REPOSITORY: ${{ github.base_ref == 'master' && secrets.DOCKERHUB_REPOSITORY || secrets.DEV_DOCKERHUB_REPOSITORY }}
17+
APPLICATION_YML: ${{ github.base_ref == 'master' && secrets.APPLICATION_YML_PROD || secrets.APPLICATION_YML_DEV }}
18+
19+
steps:
20+
- name: Checkout source code
21+
uses: actions/checkout@v3
22+
23+
- name: Set up JDK 21
24+
uses: actions/setup-java@v3
25+
with:
26+
java-version: '21'
27+
distribution: 'temurin'
28+
29+
- name: Grant execute permission to gradlew
30+
run: chmod +x ./gradlew
31+
32+
- name: Create application-{profile}.yml
33+
run: |
34+
mkdir -p src/main/resources
35+
echo "${{ env.APPLICATION_YML }}" > src/main/resources/application-${{ env.SPRING_PROFILE }}.yml
36+
37+
- name: Build with Gradle
38+
run: ./gradlew clean :bootJar
39+
40+
- name: Login to Docker Hub
41+
uses: docker/login-action@v2
42+
with:
43+
username: ${{ secrets.DOCKERHUB_USERNAME }}
44+
password: ${{ secrets.DOCKERHUB_TOKEN }}
45+
46+
- name: Build and push Docker image
47+
run: |
48+
docker build \
49+
--build-arg SPRING_PROFILE=${{ env.SPRING_PROFILE }} \
50+
-t ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.REPOSITORY }}:${{ secrets.DOCKERHUB_TAG }} \
51+
--platform linux/amd64 .
52+
53+
docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.REPOSITORY }}:${{ secrets.DOCKERHUB_TAG }}
54+
55+
- name: Deploy at EC2 instance through Bastion Host
56+
uses: appleboy/ssh-action@master
57+
with:
58+
host: ${{ secrets.BASTION_SSH_HOST }} # Bastion Host 퍼블릭 IP
59+
username: ubuntu
60+
key: ${{ secrets.BASTION_SSH_KEY }}
61+
port: ${{ secrets.BASTION_SSH_PORT }}
62+
script: |
63+
echo "✅ Bastion Host 접속 완료"
64+
65+
# Private EC2에 SSH 접속 후 배포 수행
66+
ssh -i "${{secrets.DIRECTORY_PEM}}" ubuntu@${{ env.PRIVATE_IP }} << 'EOF'
67+
echo "✅ Private EC2 접속 완료"
68+
69+
IMAGE_NAME="${{ secrets.DOCKERHUB_USERNAME }}/${{ env.REPOSITORY }}:${{ secrets.DOCKERHUB_TAG }}"
70+
CONTAINER_NAME="${{ secrets.DOCKERHUB_TAG }}"
71+
72+
echo "🔹 Docker 로그인"
73+
docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" -p "${{ secrets.DOCKERHUB_TOKEN }}"
74+
75+
echo "🔹 기존 컨테이너($CONTAINER_NAME) 중지 및 삭제"
76+
if [ "$(sudo docker ps -q -f name=$CONTAINER_NAME)" ]; then
77+
sudo docker stop "$CONTAINER_NAME"
78+
sudo docker rm "$CONTAINER_NAME"
79+
else
80+
echo "ℹ️ $CONTAINER_NAME 컨테이너가 실행 중이지 않음"
81+
fi
82+
83+
echo "🔹 기존 이미지($IMAGE_NAME) 삭제"
84+
if [ "$(sudo docker images -q $IMAGE_NAME)" ]; then
85+
sudo docker rmi "$IMAGE_NAME"
86+
else
87+
echo "ℹ️ 삭제할 이미지 없음: $IMAGE_NAME"
88+
fi
89+
90+
echo "🔹 새로운 Docker 이미지 Pull"
91+
sudo docker pull "$IMAGE_NAME"
92+
93+
echo "🔹 컨테이너 실행"
94+
sudo docker run -d --name "$CONTAINER_NAME" --network=drinkly -p 8888:8888 --restart unless-stopped "$IMAGE_NAME"
95+
96+
echo "🚀 배포 완료"
97+
EOF

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,4 @@ out/
3737
.vscode/
3838

3939
application.yml
40+
/src/main/resources/application-*.yml

Dockerfile

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
FROM openjdk:21
22

3-
# JAR 복사
4-
COPY ./build/libs/config-server.jar config-server.jar
5-
6-
# 기본 ENV 설정 (선택)
7-
ENV SPRING_PROFILE=prod
3+
ARG SPRING_PROFILE=prod
4+
ENV SPRING_PROFILE=$SPRING_PROFILE
85
ENV TZ=Asia/Seoul
96

10-
# ENTRYPOINT에서 외부 환경 변수를 기반으로 실행
11-
ENTRYPOINT ["sh", "-c", "java -Dspring.profiles.active=${SPRING_PROFILE} -Duser.timezone=${TZ} -jar config-server.jar"]
7+
COPY ./build/libs/config-server.jar config-server.jar
8+
9+
ENTRYPOINT ["sh", "-c", "java -Dspring.profiles.active=${SPRING_PROFILE} -Duser.timezone=${TZ} -jar config-server.jar"]

src/main/resources/application-dev.yml

Lines changed: 0 additions & 49 deletions
This file was deleted.

0 commit comments

Comments
 (0)