Skip to content

Commit 7d810a8

Browse files
authored
#139 [CI/CD] 배포 / 개발 서버 분리 작업
1 parent 35cff39 commit 7d810a8

File tree

3 files changed

+84
-17
lines changed

3 files changed

+84
-17
lines changed

.github/workflows/deploy-dev.yml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: Java CI/CD with Gradle (Dev Server)
2+
3+
on:
4+
push:
5+
branches: [ "dev" ] # 1. 데브 브랜치 전용
6+
workflow_dispatch:
7+
8+
jobs:
9+
deploy:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- name: Set up JDK 21
15+
uses: actions/setup-java@v4
16+
with:
17+
java-version: '21'
18+
distribution: 'temurin'
19+
cache: 'gradle'
20+
21+
- name: Build with Gradle
22+
run: |
23+
chmod +x ./gradlew
24+
./gradlew build -x test
25+
26+
- name: Create .env file from Secret
27+
run: |
28+
cat <<'EOF' > .env
29+
${{ secrets.ENV_VARIABLES }}
30+
EOF
31+
32+
- name: Copy JAR and .env to EC2
33+
uses: appleboy/scp-action@v0.1.7
34+
with:
35+
host: ${{ secrets.EC2_HOST }}
36+
username: ${{ secrets.EC2_USERNAME }}
37+
key: ${{ secrets.EC2_SSH_KEY }}
38+
source: "build/libs/*-SNAPSHOT.jar, .env"
39+
target: "~/dev-server" # 2. 데브 전용 폴더
40+
strip_components: 2
41+
42+
- name: Deploy to EC2
43+
uses: appleboy/ssh-action@v1.0.3
44+
with:
45+
host: ${{ secrets.EC2_HOST }}
46+
username: ${{ secrets.EC2_USERNAME }}
47+
key: ${{ secrets.EC2_SSH_KEY }}
48+
script: |
49+
# 3. 8081 포트만 종료 (8080은 건드리지 않음)
50+
fuser -k 8081/tcp || true
51+
52+
cd ~/dev-server
53+
chmod +x *.jar
54+
# 4. 8081 포트로 실행
55+
nohup java -jar -Dserver.port=8081 *-SNAPSHOT.jar > dev-app.log 2>&1 &
Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
name: Java CI/CD with Gradle
1+
name: Java CI/CD with Gradle (Main Server)
22

33
on:
44
push:
5-
branches: [ "dev" ] # dev 브랜치에 푸시할 때 작동
6-
workflow_dispatch: #
5+
branches: [ "main" ] # 1. 메인 브랜치 전용
6+
workflow_dispatch:
77

88
jobs:
99
deploy:
@@ -16,7 +16,7 @@ jobs:
1616
with:
1717
java-version: '21'
1818
distribution: 'temurin'
19-
cache: 'gradle' # 캐싱 추가: 빌드 속도가 훨씬 빨라집니다.
19+
cache: 'gradle'
2020

2121
- name: Build with Gradle
2222
run: |
@@ -35,9 +35,8 @@ jobs:
3535
host: ${{ secrets.EC2_HOST }}
3636
username: ${{ secrets.EC2_USERNAME }}
3737
key: ${{ secrets.EC2_SSH_KEY }}
38-
# -plain.jar는 배포에 필요 없으므로 제외합니다.
3938
source: "build/libs/*-SNAPSHOT.jar, .env"
40-
target: "~/"
39+
target: "~/main-server" # 2. 메인 전용 폴더
4140
strip_components: 2
4241

4342
- name: Deploy to EC2
@@ -47,7 +46,10 @@ jobs:
4746
username: ${{ secrets.EC2_USERNAME }}
4847
key: ${{ secrets.EC2_SSH_KEY }}
4948
script: |
49+
# 3. 8080 포트만 종료
5050
fuser -k 8080/tcp || true
5151
52-
chmod +x ~/start.sh
53-
~/start.sh
52+
cd ~/main-server
53+
chmod +x *.jar
54+
# 4. 8080 포트 명시적 실행
55+
nohup java -jar -Dserver.port=8080 *-SNAPSHOT.jar > main-app.log 2>&1 &

src/main/java/com/swyp/picke/global/config/SwaggerConfig.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,25 @@ public class SwaggerConfig {
1515

1616
@Bean
1717
public OpenAPI openAPI() {
18-
// 1. 운영 서버 주소 명시
19-
Server prodServer = new Server();
20-
prodServer.setUrl("https://picke.store");
21-
prodServer.setDescription("Production Server");
18+
// 1. 운영 서버 (8080)
19+
Server prodServer = new Server()
20+
.url("https://picke.store")
21+
.description("Production Server");
2222

23-
// 2. 로컬 테스트용 서버 주소
24-
Server localServer = new Server();
25-
localServer.setUrl("http://localhost:8080");
26-
localServer.setDescription("Local Development Server");
23+
// 2. 로컬 개발 서버 (8080)
24+
Server local8080 = new Server()
25+
.url("http://localhost:8080")
26+
.description("Local Development Server (8080)");
27+
28+
// 3. 로컬 개발 서버 (8081)
29+
Server local8081 = new Server()
30+
.url("http://localhost:8081")
31+
.description("Local Development Server (8081)");
32+
33+
// 4. 실제 EC2 데브 서버 (8081) - 나중에 배포 후 확인용
34+
Server devServer = new Server()
35+
.url("http://picke.store:8081")
36+
.description("Remote Dev Server (8081)");
2737

2838
SecurityScheme securityScheme = new SecurityScheme()
2939
.type(SecurityScheme.Type.HTTP)
@@ -37,7 +47,7 @@ public OpenAPI openAPI() {
3747

3848
return new OpenAPI()
3949
// 3. 서버 리스트 등록
40-
.servers(List.of(prodServer, localServer))
50+
.servers(List.of(prodServer, local8080, local8081, devServer))
4151
.info(new Info()
4252
.title("PIQUE API 명세서")
4353
.description("PIQUE 서비스 API 명세서입니다.")

0 commit comments

Comments
 (0)