Skip to content

Commit 42bedfb

Browse files
JangYeongHuJangYeongHu
andauthored
chore/KD-58: AWS 개발 서버 CD를 위한 workflow 추가 (#307)
* chore: AWS 개발 서버 CD를 위한 worlflow 추가 * fix: docker compose에서 SSH_PRIVATE_KEY를 제거 * refactor: 버전 업데이트 * refactor: 워크플로우 감지를 위해 이벤트 트리거에 임시적인 현재 브랜치 추가 * fix: environment 수정 * fix: 체크포인트 추가 * fix: CORS 개발 서버 IP 추가 * fix: CORS 오류 해결 * refactor: 기존 개발 서버 관련 workflow, cors 설정 제거 * refactor: Caddy를 사용한 리버스 프록시 구성 * refactor: on push 이벤트 임시 제거 * refactor: 현재 브랜치 추가 * refactor: 현재 브랜치 제거 * refactor: ocker -> docker 오타 수정 * refactor: SecurityConfig 오타 수정 --------- Co-authored-by: JangYeongHu <jyhoo32798@kyonggi.ac.kr>
1 parent 315cfaf commit 42bedfb

File tree

7 files changed

+87
-58
lines changed

7 files changed

+87
-58
lines changed

.github/workflows/dev-build-deploy.yml renamed to .github/workflows/cloud-dev-build-deploy.yml

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build and Deploy to Development Server
1+
name: Build and Deploy to Development Server on Cloud
22

33
on:
44
push:
@@ -9,11 +9,11 @@ on:
99
jobs:
1010
build-docker-image:
1111
runs-on: ubuntu-latest
12-
environment: dev
12+
environment: cloud-dev
1313

1414
steps:
1515
- name: get repo from github
16-
uses: actions/checkout@v3
16+
uses: actions/checkout@v4
1717

1818
# JDK setting
1919
- name: Set up JDK 17
@@ -34,7 +34,7 @@ jobs:
3434
3535
# DockerHub 로그인
3636
- name: Docker login
37-
uses: docker/login-action@v2
37+
uses: docker/login-action@v3
3838
with:
3939
username: ${{ secrets.DOCKERHUB_USERNAME }}
4040
password: ${{ secrets.DOCKERHUB_PASSWORD }}
@@ -74,20 +74,20 @@ jobs:
7474
deploy-to-dev:
7575
runs-on: ubuntu-latest
7676
needs: build-docker-image
77-
environment: dev
77+
environment: cloud-dev
7878

7979
steps:
8080
- name: checkout repository
8181
uses: actions/checkout@v3
8282

83-
- name: scp docker-compose.yml to server
83+
- name: scp docker-compose and Caddyfile to server
8484
uses: appleboy/scp-action@master
8585
with:
8686
host: ${{ secrets.SERVER_HOST }}
8787
username: ${{ secrets.SERVER_USERNAME }}
88-
password: ${{ secrets.SERVER_PASSWORD }}
88+
key: ${{ secrets.SSH_PRIVATE_KEY }}
8989
port: ${{ secrets.SERVER_PORT }}
90-
source: docker/development/docker-compose.yml
90+
source: "docker/development/docker-compose.yml, caddy/development/Caddyfile"
9191
target: ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}
9292
strip_components: 2
9393

@@ -96,13 +96,11 @@ jobs:
9696
with:
9797
host: ${{ secrets.SERVER_HOST }}
9898
username: ${{ secrets.SERVER_USERNAME }}
99-
password: ${{ secrets.SERVER_PASSWORD }}
99+
key: ${{ secrets.SSH_PRIVATE_KEY }}
100100
port: ${{ secrets.SERVER_PORT }}
101101
script: |
102-
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S docker-compose -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/docker-compose.yml pull aics-api
103-
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S docker-compose -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/docker-compose.yml pull aics-admin
104-
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S docker-compose -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/docker-compose.yml pull aics-auth
102+
set -euo pipefail
103+
cd ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}
105104
106-
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S docker-compose -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/docker-compose.yml --env-file ${{ secrets.ENVIRONMENT_PATH }} up -d aics-api
107-
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S docker-compose -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/docker-compose.yml --env-file ${{ secrets.ENVIRONMENT_PATH }} up -d aics-admin
108-
echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S docker-compose -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/docker-compose.yml --env-file ${{ secrets.ENVIRONMENT_PATH }} up -d aics-auth
105+
docker compose pull aics-api aics-admin aics-auth
106+
docker compose --env-file ${{ secrets.ENVIRONMENT_PATH }} up -d aics-api aics-admin aics-auth

aics-admin/src/main/java/kgu/developers/admin/config/SwaggerConfig.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
package kgu.developers.admin.config;
22

3-
import static java.lang.String.format;
4-
5-
import java.util.List;
6-
import java.util.Map;
7-
8-
import org.springframework.beans.factory.annotation.Value;
9-
import org.springframework.context.annotation.Bean;
10-
import org.springframework.context.annotation.Configuration;
11-
import org.springframework.core.env.Environment;
12-
133
import io.swagger.v3.oas.models.Components;
144
import io.swagger.v3.oas.models.OpenAPI;
155
import io.swagger.v3.oas.models.info.Info;
166
import io.swagger.v3.oas.models.security.SecurityRequirement;
177
import io.swagger.v3.oas.models.security.SecurityScheme;
188
import io.swagger.v3.oas.models.servers.Server;
199
import lombok.RequiredArgsConstructor;
10+
import org.springframework.beans.factory.annotation.Value;
11+
import org.springframework.context.annotation.Bean;
12+
import org.springframework.context.annotation.Configuration;
13+
import org.springframework.core.env.Environment;
14+
15+
import java.util.List;
16+
import java.util.Map;
17+
18+
import static java.lang.String.format;
2019

2120
@Configuration
2221
@RequiredArgsConstructor
@@ -34,7 +33,7 @@ public class SwaggerConfig {
3433
private final Environment environment;
3534

3635
private static final Map<String, String> PROFILE_SERVER_URL_MAP = Map.of(
37-
"dev", "https://aics-admin.ummdev.com",
36+
"dev", "https://aics-admin.kgudevelopers.monster",
3837
"local", "http://localhost:8081"
3938
);
4039

aics-api/src/main/java/kgu/developers/api/config/SwaggerConfig.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
package kgu.developers.api.config;
22

3-
import static java.lang.String.format;
4-
5-
import java.util.List;
6-
import java.util.Map;
7-
8-
import org.springframework.beans.factory.annotation.Value;
9-
import org.springframework.context.annotation.Bean;
10-
import org.springframework.context.annotation.Configuration;
11-
import org.springframework.core.env.Environment;
12-
133
import io.swagger.v3.oas.models.Components;
144
import io.swagger.v3.oas.models.OpenAPI;
155
import io.swagger.v3.oas.models.info.Info;
166
import io.swagger.v3.oas.models.security.SecurityRequirement;
177
import io.swagger.v3.oas.models.security.SecurityScheme;
188
import io.swagger.v3.oas.models.servers.Server;
199
import lombok.RequiredArgsConstructor;
10+
import org.springframework.beans.factory.annotation.Value;
11+
import org.springframework.context.annotation.Bean;
12+
import org.springframework.context.annotation.Configuration;
13+
import org.springframework.core.env.Environment;
14+
15+
import java.util.List;
16+
import java.util.Map;
17+
18+
import static java.lang.String.format;
2019

2120
@Configuration
2221
@RequiredArgsConstructor
@@ -34,7 +33,7 @@ public class SwaggerConfig {
3433
private final Environment environment;
3534

3635
private static final Map<String, String> PROFILE_SERVER_URL_MAP = Map.of(
37-
"dev", "https://aics-api.ummdev.com",
36+
"dev", "https://aics-api.kgudevelopers.monster",
3837
"local", "http://localhost:8080"
3938
);
4039

aics-auth/src/main/java/kgu/developers/auth/config/SwaggerConfig.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
package kgu.developers.auth.config;
22

3-
import static java.lang.String.format;
4-
5-
import java.util.List;
6-
import java.util.Map;
7-
8-
import org.springframework.beans.factory.annotation.Value;
9-
import org.springframework.context.annotation.Bean;
10-
import org.springframework.context.annotation.Configuration;
11-
import org.springframework.core.env.Environment;
12-
133
import io.swagger.v3.oas.models.Components;
144
import io.swagger.v3.oas.models.OpenAPI;
155
import io.swagger.v3.oas.models.info.Info;
166
import io.swagger.v3.oas.models.security.SecurityRequirement;
177
import io.swagger.v3.oas.models.security.SecurityScheme;
188
import io.swagger.v3.oas.models.servers.Server;
199
import lombok.RequiredArgsConstructor;
10+
import org.springframework.beans.factory.annotation.Value;
11+
import org.springframework.context.annotation.Bean;
12+
import org.springframework.context.annotation.Configuration;
13+
import org.springframework.core.env.Environment;
14+
15+
import java.util.List;
16+
import java.util.Map;
17+
18+
import static java.lang.String.format;
2019

2120
@Configuration
2221
@RequiredArgsConstructor
@@ -34,7 +33,7 @@ public class SwaggerConfig {
3433
private final Environment environment;
3534

3635
private static final Map<String, String> PROFILE_SERVER_URL_MAP = Map.of(
37-
"dev", "https://aics-auth.ummdev.com",
36+
"dev", "https://aics-auth.kgudevelopers.monster",
3837
"local", "http://localhost:8082"
3938
);
4039

aics-common/src/main/java/kgu/developers/common/config/SecurityConfig.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package kgu.developers.common.config;
22

3-
import java.util.Arrays;
4-
import java.util.Collections;
5-
3+
import kgu.developers.common.auth.filter.TokenAuthenticationFilter;
4+
import kgu.developers.common.auth.jwt.TokenProvider;
5+
import lombok.RequiredArgsConstructor;
66
import org.springframework.context.annotation.Bean;
77
import org.springframework.context.annotation.Configuration;
88
import org.springframework.security.authentication.AuthenticationManager;
@@ -19,9 +19,8 @@
1919
import org.springframework.web.cors.CorsConfiguration;
2020
import org.springframework.web.cors.CorsConfigurationSource;
2121

22-
import kgu.developers.common.auth.filter.TokenAuthenticationFilter;
23-
import kgu.developers.common.auth.jwt.TokenProvider;
24-
import lombok.RequiredArgsConstructor;
22+
import java.util.Arrays;
23+
import java.util.Collections;
2524

2625
@Configuration
2726
@EnableWebSecurity
@@ -99,9 +98,9 @@ CorsConfigurationSource corsConfigurationSource() {
9998
"http://localhost:8080",
10099
"http://localhost:8081",
101100
"http://localhost:8082",
102-
"https://aics-api.ummdev.com",
103-
"https://aics-admin.ummdev.com",
104-
"https://aics-auth.ummdev.com",
101+
"https://aics-api.kgudevelopers.monster",
102+
"https://aics-admin.kgudevelopers.monster",
103+
"https://aics-auth.kgudevelopers.monster",
105104
"https://aics-client-dev.vercel.app/",
106105
"http://175.45.195.63",
107106
"http://203.249.22.207",

caddy/development/Caddyfile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
email kgudevelopers@gmail.com
3+
}
4+
5+
aics-api.kgudevelopers.monster {
6+
reverse_proxy aics-api:8080
7+
}
8+
9+
aics-admin.kgudevelopers.monster {
10+
reverse_proxy aics-admin:8081
11+
}
12+
13+
aics-auth.kgudevelopers.monster {
14+
reverse_proxy aics-auth:8082
15+
}
16+
17+
kgudevelopers.monster {
18+
reverse_proxy aics-app:3000
19+
}

docker/development/docker-compose.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,25 @@ services:
7171
networks:
7272
- aics-network
7373

74+
caddy:
75+
image: caddy:latest
76+
container_name: caddy
77+
restart: unless-stopped
78+
ports:
79+
- "80:80"
80+
- "443:443"
81+
volumes:
82+
- ./Caddyfile:/etc/caddy/Caddyfile
83+
- caddy_data:/data
84+
- caddy_config:/config
85+
networks:
86+
- aics-network
87+
7488
networks:
7589
aics-network:
7690
driver: bridge
7791

7892
volumes:
79-
postgres-data:
93+
postgres-data:
94+
caddy_data:
95+
caddy_config:

0 commit comments

Comments
 (0)