diff --git a/.github/workflows/dev-build-deploy.yml b/.github/workflows/cloud-dev-build-deploy.yml similarity index 69% rename from .github/workflows/dev-build-deploy.yml rename to .github/workflows/cloud-dev-build-deploy.yml index 95e8fad5..1c568c30 100644 --- a/.github/workflows/dev-build-deploy.yml +++ b/.github/workflows/cloud-dev-build-deploy.yml @@ -1,4 +1,4 @@ -name: Build and Deploy to Development Server +name: Build and Deploy to Development Server on Cloud on: push: @@ -9,11 +9,11 @@ on: jobs: build-docker-image: runs-on: ubuntu-latest - environment: dev + environment: cloud-dev steps: - name: get repo from github - uses: actions/checkout@v3 + uses: actions/checkout@v4 # JDK setting - name: Set up JDK 17 @@ -34,7 +34,7 @@ jobs: # DockerHub 로그인 - name: Docker login - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} @@ -74,20 +74,20 @@ jobs: deploy-to-dev: runs-on: ubuntu-latest needs: build-docker-image - environment: dev + environment: cloud-dev steps: - name: checkout repository uses: actions/checkout@v3 - - name: scp docker-compose.yml to server + - name: scp docker-compose and Caddyfile to server uses: appleboy/scp-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USERNAME }} - password: ${{ secrets.SERVER_PASSWORD }} + key: ${{ secrets.SSH_PRIVATE_KEY }} port: ${{ secrets.SERVER_PORT }} - source: docker/development/docker-compose.yml + source: "docker/development/docker-compose.yml, caddy/development/Caddyfile" target: ${{ secrets.DOCKER_COMPOSE_YAML_PATH }} strip_components: 2 @@ -96,13 +96,11 @@ jobs: with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USERNAME }} - password: ${{ secrets.SERVER_PASSWORD }} + key: ${{ secrets.SSH_PRIVATE_KEY }} port: ${{ secrets.SERVER_PORT }} script: | - echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S docker-compose -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/docker-compose.yml pull aics-api - echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S docker-compose -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/docker-compose.yml pull aics-admin - echo "${{ secrets.SERVER_PASSWORD }}" | sudo -S docker-compose -f ${{ secrets.DOCKER_COMPOSE_YAML_PATH }}/docker-compose.yml pull aics-auth + set -euo pipefail + cd ${{ secrets.DOCKER_COMPOSE_YAML_PATH }} - 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 - 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 - 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 \ No newline at end of file + docker compose pull aics-api aics-admin aics-auth + docker compose --env-file ${{ secrets.ENVIRONMENT_PATH }} up -d aics-api aics-admin aics-auth diff --git a/aics-admin/src/main/java/kgu/developers/admin/config/SwaggerConfig.java b/aics-admin/src/main/java/kgu/developers/admin/config/SwaggerConfig.java index 4f9ea564..b0038b6f 100644 --- a/aics-admin/src/main/java/kgu/developers/admin/config/SwaggerConfig.java +++ b/aics-admin/src/main/java/kgu/developers/admin/config/SwaggerConfig.java @@ -1,15 +1,5 @@ package kgu.developers.admin.config; -import static java.lang.String.format; - -import java.util.List; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.Environment; - import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; @@ -17,6 +7,15 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.servers.Server; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; + +import java.util.List; +import java.util.Map; + +import static java.lang.String.format; @Configuration @RequiredArgsConstructor @@ -34,7 +33,7 @@ public class SwaggerConfig { private final Environment environment; private static final Map PROFILE_SERVER_URL_MAP = Map.of( - "dev", "https://aics-admin.ummdev.com", + "dev", "https://aics-admin.kgudevelopers.monster", "local", "http://localhost:8081" ); diff --git a/aics-api/src/main/java/kgu/developers/api/config/SwaggerConfig.java b/aics-api/src/main/java/kgu/developers/api/config/SwaggerConfig.java index 2e2674c9..32755f68 100644 --- a/aics-api/src/main/java/kgu/developers/api/config/SwaggerConfig.java +++ b/aics-api/src/main/java/kgu/developers/api/config/SwaggerConfig.java @@ -1,15 +1,5 @@ package kgu.developers.api.config; -import static java.lang.String.format; - -import java.util.List; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.Environment; - import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; @@ -17,6 +7,15 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.servers.Server; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; + +import java.util.List; +import java.util.Map; + +import static java.lang.String.format; @Configuration @RequiredArgsConstructor @@ -34,7 +33,7 @@ public class SwaggerConfig { private final Environment environment; private static final Map PROFILE_SERVER_URL_MAP = Map.of( - "dev", "https://aics-api.ummdev.com", + "dev", "https://aics-api.kgudevelopers.monster", "local", "http://localhost:8080" ); diff --git a/aics-auth/src/main/java/kgu/developers/auth/config/SwaggerConfig.java b/aics-auth/src/main/java/kgu/developers/auth/config/SwaggerConfig.java index 581b4632..e04911cf 100644 --- a/aics-auth/src/main/java/kgu/developers/auth/config/SwaggerConfig.java +++ b/aics-auth/src/main/java/kgu/developers/auth/config/SwaggerConfig.java @@ -1,15 +1,5 @@ package kgu.developers.auth.config; -import static java.lang.String.format; - -import java.util.List; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.Environment; - import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; @@ -17,6 +7,15 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.servers.Server; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; + +import java.util.List; +import java.util.Map; + +import static java.lang.String.format; @Configuration @RequiredArgsConstructor @@ -34,7 +33,7 @@ public class SwaggerConfig { private final Environment environment; private static final Map PROFILE_SERVER_URL_MAP = Map.of( - "dev", "https://aics-auth.ummdev.com", + "dev", "https://aics-auth.kgudevelopers.monster", "local", "http://localhost:8082" ); diff --git a/aics-common/src/main/java/kgu/developers/common/config/SecurityConfig.java b/aics-common/src/main/java/kgu/developers/common/config/SecurityConfig.java index e201c665..e36ef2bd 100644 --- a/aics-common/src/main/java/kgu/developers/common/config/SecurityConfig.java +++ b/aics-common/src/main/java/kgu/developers/common/config/SecurityConfig.java @@ -1,8 +1,8 @@ package kgu.developers.common.config; -import java.util.Arrays; -import java.util.Collections; - +import kgu.developers.common.auth.filter.TokenAuthenticationFilter; +import kgu.developers.common.auth.jwt.TokenProvider; +import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; @@ -19,9 +19,8 @@ import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfigurationSource; -import kgu.developers.common.auth.filter.TokenAuthenticationFilter; -import kgu.developers.common.auth.jwt.TokenProvider; -import lombok.RequiredArgsConstructor; +import java.util.Arrays; +import java.util.Collections; @Configuration @EnableWebSecurity @@ -99,9 +98,9 @@ CorsConfigurationSource corsConfigurationSource() { "http://localhost:8080", "http://localhost:8081", "http://localhost:8082", - "https://aics-api.ummdev.com", - "https://aics-admin.ummdev.com", - "https://aics-auth.ummdev.com", + "https://aics-api.kgudevelopers.monster", + "https://aics-admin.kgudevelopers.monster", + "https://aics-auth.kgudevelopers.monster", "https://aics-client-dev.vercel.app/", "http://175.45.195.63", "http://203.249.22.207", diff --git a/caddy/development/Caddyfile b/caddy/development/Caddyfile new file mode 100644 index 00000000..2b8a440f --- /dev/null +++ b/caddy/development/Caddyfile @@ -0,0 +1,19 @@ +{ + email kgudevelopers@gmail.com +} + +aics-api.kgudevelopers.monster { + reverse_proxy aics-api:8080 +} + +aics-admin.kgudevelopers.monster { + reverse_proxy aics-admin:8081 +} + +aics-auth.kgudevelopers.monster { + reverse_proxy aics-auth:8082 +} + +kgudevelopers.monster { + reverse_proxy aics-app:3000 +} \ No newline at end of file diff --git a/docker/development/docker-compose.yml b/docker/development/docker-compose.yml index 66f97b2d..d095ce8e 100644 --- a/docker/development/docker-compose.yml +++ b/docker/development/docker-compose.yml @@ -71,9 +71,25 @@ services: networks: - aics-network + caddy: + image: caddy:latest + container_name: caddy + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - caddy_data:/data + - caddy_config:/config + networks: + - aics-network + networks: aics-network: driver: bridge volumes: - postgres-data: \ No newline at end of file + postgres-data: + caddy_data: + caddy_config: \ No newline at end of file