Skip to content

Commit 2cfd491

Browse files
authored
Merge pull request #103 from 2025TUKCOMCD/#27-github-actions
Feat : BackEnd 자동 배포 CI/CD
2 parents ec07b26 + a5caa97 commit 2cfd491

File tree

4 files changed

+81
-3
lines changed

4 files changed

+81
-3
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: Backend CI/CD Pipeline
2+
3+
on:
4+
push:
5+
paths:
6+
- 'HalfFifty_BE/**'
7+
pull_request:
8+
paths:
9+
- 'HalfFifty_BE/**'
10+
11+
jobs:
12+
test:
13+
name: Test and Build Backend
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Checkout code
18+
uses: actions/checkout@v3
19+
20+
- name: Set up JDK 17
21+
uses: actions/setup-java@v3
22+
with:
23+
java-version: '17'
24+
distribution: 'temurin'
25+
26+
- name: Add execute permissions to Gradlew
27+
run: chmod +x ./gradlew
28+
working-directory: HalfFifty_BE
29+
30+
# Gradle 빌드 및 테스트
31+
- name: Build and Test
32+
working-directory: HalfFifty_BE
33+
env:
34+
DB_DRIVER_CLASS_NAME: ${{ secrets.DB_DRIVER_CLASS_NAME }}
35+
DB_URL: ${{ secrets.DB_URL }}
36+
DB_USERNAME: ${{ secrets.DB_USERNAME }}
37+
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
38+
run: |
39+
./gradlew clean build
40+
41+
deploy:
42+
name: Deploy Backend
43+
needs: test
44+
if: github.ref == 'refs/heads/main'
45+
runs-on: ubuntu-latest
46+
47+
steps:
48+
- name: Checkout code
49+
uses: actions/checkout@v3
50+
51+
- name: Set up JDK 17
52+
uses: actions/setup-java@v3
53+
with:
54+
java-version: '17'
55+
distribution: 'temurin'
56+
57+
- name: Build Docker Image
58+
working-directory: HalfFifty_BE
59+
run: docker build -t half-fifty:latest .
60+
61+
- name: Deploy to EC2
62+
uses: appleboy/[email protected]
63+
with:
64+
host: ${{ secrets.AWS_IP }}
65+
username: ${{ secrets.AWS_USER }}
66+
key: ${{ secrets.AWS_KEY }}
67+
script: |
68+
docker stop half-fifty || true
69+
docker rm half-fifty || true
70+
docker run -d -p 80:8080 --name half-fifty half-fifty:latest
71+
72+
- name: Verify Container Status
73+
uses: appleboy/[email protected]
74+
with:
75+
host: ${{ secrets.AWS_IP }}
76+
username: ${{ secrets.AWS_USER }}
77+
key: ${{ secrets.AWS_KEY }}
78+
script: docker ps | grep half-fifty

HalfFifty_BE/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ COPY ${JAR_FILE} app.jar
99
ENTRYPOINT ["java", "-jar", "/app.jar"]
1010

1111
# 컨테이너가 사용할 포트
12-
EXPOSE 8080
12+
EXPOSE 8081

HalfFifty_BE/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ services:
66
context: . # Dockerfile이 있는 디렉토리
77
dockerfile: Dockerfile
88
ports:
9-
- "8080:8080" # 로컬 8080 포트를 컨테이너의 8080 포트로 매핑
9+
- "8081:8080" # 로컬 8080 포트를 컨테이너의 8080 포트로 매핑
1010
environment:
1111
SPRING_PROFILES_ACTIVE: prod # Spring Boot의 활성화된 프로파일 설정
1212
restart: always # 컨테이너가 종료되면 자동 재시작doc

HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/HealthCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ public class HealthCheck {
88

99
@GetMapping("/")
1010
public String health() {
11-
return "server on";
11+
return "server on!";
1212
}
1313
}

0 commit comments

Comments
 (0)