From f2f3a2d95219ee88f0c4e5417a1ea47a85409a9d Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 14:17:00 +0900 Subject: [PATCH 01/11] =?UTF-8?q?[chore]=20:=20gitignore=EC=97=90=20applic?= =?UTF-8?q?ation.yml=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 15c92410..8eddcaf5 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ out/ /src/main/generated/ /src/main/resources/application-local.yml /src/main/resources/application-prod.yml +/src/main/resources/application-dev.yml From aa5663df286f758acedfb360c97a1a0ffd9aa18a Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 14:23:48 +0900 Subject: [PATCH 02/11] =?UTF-8?q?[chore]=20:=20=EC=9A=B4=EC=98=81=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20cd=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd_prod.yml | 72 +++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/cd_prod.yml diff --git a/.github/workflows/cd_prod.yml b/.github/workflows/cd_prod.yml new file mode 100644 index 00000000..b2e50e1f --- /dev/null +++ b/.github/workflows/cd_prod.yml @@ -0,0 +1,72 @@ +name: 운영 서버 자동 배포 + +on: + push: + branches: ["prod"] + +permissions: + contents: read + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: 자바 버전 설정 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: main 경로 application.yml 파일 생성 + run: | + mkdir -p ./src/main/resources + echo "${{ secrets.PROD_APPLICATION_YML }}" | base64 -d > ./src/main/resources/application.yml + + - name: gradle 권한 부여 + run: chmod +x ./gradlew + shell: bash + + - name: 빌드 시 캐시 적용 + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: 빌드 + run: ./gradlew build -x test + + - name: 도커 허브 로그인 + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME_PROD }} + password: ${{ secrets.DOCKERHUB_TOKEN_PROD }} + + - name: 도커 이미지 빌드 및 푸시 + run: | + docker build -f Dockerfile -t ${{ secrets.DOCKERHUB_USERNAME_PROD }}/${{ secrets.DOCKERHUB_APP_NAME }} . + docker push ${{ secrets.DOCKERHUB_USERNAME_PROD }}/${{ secrets.DOCKERHUB_APP_NAME }} + + deploy: + needs: build-and-push-image + runs-on: ubuntu-latest + steps: + - name: 이미지 pull 받아서 백그라운드 실행 + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.EC2_HOST_PROD }} + username: ${{ secrets.EC2_USERNAME }} + key: ${{ secrets.EC2_KEY_PROD }} + port: ${{ secrets.EC2_PORT }} + script: | + cd compose + docker rm -f $(docker ps -qa) + docker pull ${{ secrets.DOCKERHUB_USERNAME_PROD }}/${{ secrets.DOCKERHUB_APP_NAME }} + docker-compose up -d + docker system prune -f \ No newline at end of file From a88f3ce29ba38e15a9e36ff32993e6bbd57d6e57 Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 14:24:04 +0900 Subject: [PATCH 03/11] =?UTF-8?q?[rename]=20:=20=EA=B0=9C=EB=B0=9C=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20cd=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/{cd.yml => cd_dev.yml} | 28 +++++++++--------------- 1 file changed, 10 insertions(+), 18 deletions(-) rename .github/workflows/{cd.yml => cd_dev.yml} (74%) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd_dev.yml similarity index 74% rename from .github/workflows/cd.yml rename to .github/workflows/cd_dev.yml index 06f171d2..4b67115f 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd_dev.yml @@ -1,8 +1,8 @@ -name: CD Backend +name: 개발 서버 자동 배포 on: push: - branches: [ "main", "dev" ] + branches: ["dev"] permissions: contents: read @@ -14,26 +14,22 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - # 자바 버전 설정 - - name: Set up JDK 17 + - name: 자바 버전 설정 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - # main 경로 application.yml 파일 생성 - - name: Generate application.yml + - name: main 경로 application.yml 파일 생성 run: | mkdir -p ./src/main/resources echo "${{ secrets.MAIN_APPLICATION_YML }}" | base64 -d > ./src/main/resources/application.yml - # gradle 권한 부여 - - name: Grant execute permission for gradlew + - name: gradle 권한 부여 run: chmod +x ./gradlew shell: bash - # 빌드 시 캐시 적용 - - name: Gradle Caching + - name: 빌드 시 캐시 적용 uses: actions/cache@v3 with: path: | @@ -43,19 +39,16 @@ jobs: restore-keys: | ${{ runner.os }}-gradle- - # 빌드 - - name: Build with Gradle + - name: 빌드 run: ./gradlew build -x test - # 도커 허브 로그인 - - name: Docker Hub Login + - name: 도커 허브 로그인 uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - # 도커 이미지 빌드 및 푸시 - - name: docker image build and push + - name: 도커 이미지 빌드 및 푸시 run: | docker build -f Dockerfile -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_APP_NAME }} . docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_APP_NAME }} @@ -64,8 +57,7 @@ jobs: needs: build-and-push-image runs-on: ubuntu-latest steps: - # 서버 백그라운드 실행 - - name: pull image and run container + - name: 이미지 pull 받아서 백그라운드 실행 uses: appleboy/ssh-action@master with: host: ${{ secrets.EC2_HOST }} From ab90e489a5d7019eb601490c0b8975074e435d3b Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 14:29:09 +0900 Subject: [PATCH 04/11] =?UTF-8?q?[chore]=20:=20=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd_prod.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cd_prod.yml b/.github/workflows/cd_prod.yml index b2e50e1f..85d67924 100644 --- a/.github/workflows/cd_prod.yml +++ b/.github/workflows/cd_prod.yml @@ -3,6 +3,8 @@ name: 운영 서버 자동 배포 on: push: branches: ["prod"] + pull_request: + branches: ["dev"] permissions: contents: read From 643478b57ac8139d79e604ab95456d8da67a5591 Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 19:04:53 +0900 Subject: [PATCH 05/11] =?UTF-8?q?[chore]=20:=20=EB=B0=B0=ED=8F=AC=20?= =?UTF-8?q?=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=9E=84=EC=8B=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B6=80=EB=B6=84=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd_prod.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/cd_prod.yml b/.github/workflows/cd_prod.yml index 85d67924..b2e50e1f 100644 --- a/.github/workflows/cd_prod.yml +++ b/.github/workflows/cd_prod.yml @@ -3,8 +3,6 @@ name: 운영 서버 자동 배포 on: push: branches: ["prod"] - pull_request: - branches: ["dev"] permissions: contents: read From b846907ba6b6bce99a551ed70d757f2c4d84b3fd Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 19:05:17 +0900 Subject: [PATCH 06/11] =?UTF-8?q?[chore]=20:=20=EB=B3=80=EC=88=98=ED=98=95?= =?UTF-8?q?=EC=97=90=20postfix=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd_dev.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cd_dev.yml b/.github/workflows/cd_dev.yml index 4b67115f..9af9dc9f 100644 --- a/.github/workflows/cd_dev.yml +++ b/.github/workflows/cd_dev.yml @@ -3,6 +3,8 @@ name: 개발 서버 자동 배포 on: push: branches: ["dev"] + pull_request: + branches: [ "main", "dev" ] permissions: contents: read @@ -45,13 +47,13 @@ jobs: - name: 도커 허브 로그인 uses: docker/login-action@v2 with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} + username: ${{ secrets.DOCKERHUB_USERNAME_DEV }} + password: ${{ secrets.DOCKERHUB_TOKEN_DEV }} - name: 도커 이미지 빌드 및 푸시 run: | - docker build -f Dockerfile -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_APP_NAME }} . - docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_APP_NAME }} + docker build -f Dockerfile -t ${{ secrets.DOCKERHUB_USERNAME_DEV }}/${{ secrets.DOCKERHUB_APP_NAME }} . + docker push ${{ secrets.DOCKERHUB_USERNAME_DEV }}/${{ secrets.DOCKERHUB_APP_NAME }} deploy: needs: build-and-push-image @@ -60,13 +62,13 @@ jobs: - name: 이미지 pull 받아서 백그라운드 실행 uses: appleboy/ssh-action@master with: - host: ${{ secrets.EC2_HOST }} + host: ${{ secrets.EC2_HOST_DEV }} username: ${{ secrets.EC2_USERNAME }} - key: ${{ secrets.EC2_KEY }} + key: ${{ secrets.EC2_KEY_DEV }} port: ${{ secrets.EC2_PORT }} script: | cd compose docker rm -f $(docker ps -qa) - docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_APP_NAME }} + docker pull ${{ secrets.DOCKERHUB_USERNAME_DEV }}/${{ secrets.DOCKERHUB_APP_NAME }} docker-compose up -d docker system prune -f \ No newline at end of file From e3ccb0dcbb9a74f125a966b124db3e1ffcf2909c Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 20:35:31 +0900 Subject: [PATCH 07/11] =?UTF-8?q?[chore]=20:=20cd=5Fdev.yml=20=EB=B0=B0?= =?UTF-8?q?=ED=8F=AC=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd_dev.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/cd_dev.yml b/.github/workflows/cd_dev.yml index 9af9dc9f..266b32a6 100644 --- a/.github/workflows/cd_dev.yml +++ b/.github/workflows/cd_dev.yml @@ -3,8 +3,6 @@ name: 개발 서버 자동 배포 on: push: branches: ["dev"] - pull_request: - branches: [ "main", "dev" ] permissions: contents: read From cf2f4fe26c45410a620ee71b78ed762e9a71c161 Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 20:36:38 +0900 Subject: [PATCH 08/11] =?UTF-8?q?[chore]=20:=20=EC=9A=B4=EC=98=81=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=A0=91?= =?UTF-8?q?=EC=86=8D=20=ED=97=88=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dnd/gongmuin/common/config/SwaggerConfig.java | 3 ++- .../java/com/dnd/gongmuin/security/config/SecurityConfig.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/dnd/gongmuin/common/config/SwaggerConfig.java b/src/main/java/com/dnd/gongmuin/common/config/SwaggerConfig.java index b8f8a0b2..3aac7961 100644 --- a/src/main/java/com/dnd/gongmuin/common/config/SwaggerConfig.java +++ b/src/main/java/com/dnd/gongmuin/common/config/SwaggerConfig.java @@ -14,7 +14,8 @@ description = "공무인 API 명세서", version = "v.1.0"), servers = { - @Server(url = "https://gongmuin.site", description = "Deploy Server URL"), + @Server(url = "https://gongmuin.site", description = "개발 서버"), + @Server(url = "https://gongmuin.shop", description = "운영 서버"), @Server(url = "http://localhost:8080", description = "Local Host URL") } ) diff --git a/src/main/java/com/dnd/gongmuin/security/config/SecurityConfig.java b/src/main/java/com/dnd/gongmuin/security/config/SecurityConfig.java index 8c4d30ba..9892e442 100644 --- a/src/main/java/com/dnd/gongmuin/security/config/SecurityConfig.java +++ b/src/main/java/com/dnd/gongmuin/security/config/SecurityConfig.java @@ -91,7 +91,7 @@ public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); configuration.setAllowedOrigins(Arrays.asList("http://localhost:3000", "https://gongmuin.netlify.app", - "https://gongmuin.site/", "http://localhost:8080", "/ws/**")); + "https://gongmuin.site", "https://gongmuin.shop", "http://localhost:8080", "/ws/**")); configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS")); configuration.setAllowedHeaders(Arrays.asList("*")); configuration.setExposedHeaders(Arrays.asList("Set-Cookie", "Authorization")); From e8de595376b1609d4339e10bf01400acd394df92 Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 20:48:36 +0900 Subject: [PATCH 09/11] =?UTF-8?q?[chore]=20:=20swagger=20serverlist=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd_dev.yml | 2 ++ .github/workflows/cd_prod.yml | 2 ++ .../java/com/dnd/gongmuin/common/config/SwaggerConfig.java | 7 +------ 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cd_dev.yml b/.github/workflows/cd_dev.yml index 266b32a6..9af9dc9f 100644 --- a/.github/workflows/cd_dev.yml +++ b/.github/workflows/cd_dev.yml @@ -3,6 +3,8 @@ name: 개발 서버 자동 배포 on: push: branches: ["dev"] + pull_request: + branches: [ "main", "dev" ] permissions: contents: read diff --git a/.github/workflows/cd_prod.yml b/.github/workflows/cd_prod.yml index b2e50e1f..99b2c7d7 100644 --- a/.github/workflows/cd_prod.yml +++ b/.github/workflows/cd_prod.yml @@ -3,6 +3,8 @@ name: 운영 서버 자동 배포 on: push: branches: ["prod"] + pull_request: + branches: [ "main", "dev" ] permissions: contents: read diff --git a/src/main/java/com/dnd/gongmuin/common/config/SwaggerConfig.java b/src/main/java/com/dnd/gongmuin/common/config/SwaggerConfig.java index 3aac7961..796b793a 100644 --- a/src/main/java/com/dnd/gongmuin/common/config/SwaggerConfig.java +++ b/src/main/java/com/dnd/gongmuin/common/config/SwaggerConfig.java @@ -12,12 +12,7 @@ info = @Info( title = "GongmuIn API", description = "공무인 API 명세서", - version = "v.1.0"), - servers = { - @Server(url = "https://gongmuin.site", description = "개발 서버"), - @Server(url = "https://gongmuin.shop", description = "운영 서버"), - @Server(url = "http://localhost:8080", description = "Local Host URL") - } + version = "v.1.0") ) @Configuration public class SwaggerConfig { From 618968f1951ac9e5ce64846cbfe99596ee740bbd Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 21:20:19 +0900 Subject: [PATCH 10/11] =?UTF-8?q?[chore]=20:=20secret=20=EB=B3=80=EC=88=98?= =?UTF-8?q?=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd_dev.yml | 4 ++-- .github/workflows/cd_prod.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cd_dev.yml b/.github/workflows/cd_dev.yml index 9af9dc9f..759c5036 100644 --- a/.github/workflows/cd_dev.yml +++ b/.github/workflows/cd_dev.yml @@ -1,4 +1,4 @@ -name: 개발 서버 자동 배포 +name: Dev Server Deploy on: push: @@ -25,7 +25,7 @@ jobs: - name: main 경로 application.yml 파일 생성 run: | mkdir -p ./src/main/resources - echo "${{ secrets.MAIN_APPLICATION_YML }}" | base64 -d > ./src/main/resources/application.yml + echo "${{ secrets.APPLICATION_YML_DEV }}" | base64 -d > ./src/main/resources/application.yml - name: gradle 권한 부여 run: chmod +x ./gradlew diff --git a/.github/workflows/cd_prod.yml b/.github/workflows/cd_prod.yml index 99b2c7d7..74456b6e 100644 --- a/.github/workflows/cd_prod.yml +++ b/.github/workflows/cd_prod.yml @@ -1,4 +1,4 @@ -name: 운영 서버 자동 배포 +name: Prod Server Deploy on: push: @@ -25,7 +25,7 @@ jobs: - name: main 경로 application.yml 파일 생성 run: | mkdir -p ./src/main/resources - echo "${{ secrets.PROD_APPLICATION_YML }}" | base64 -d > ./src/main/resources/application.yml + echo "${{ secrets.APPLICATION_YML_PROD }}" | base64 -d > ./src/main/resources/application.yml - name: gradle 권한 부여 run: chmod +x ./gradlew From 746eb9a42aae790dfe4d4c64ad103b120445b2b4 Mon Sep 17 00:00:00 2001 From: hs12 Date: Tue, 17 Dec 2024 21:44:55 +0900 Subject: [PATCH 11/11] =?UTF-8?q?[chore]=20:=20=EB=B0=B0=ED=8F=AC=20?= =?UTF-8?q?=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=9E=84=EC=8B=9C?= =?UTF-8?q?=EB=A1=9C=20=EC=B6=94=EA=B0=80=EB=90=9C=20=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd_dev.yml | 2 -- .github/workflows/cd_prod.yml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/cd_dev.yml b/.github/workflows/cd_dev.yml index 759c5036..8d6b2b1b 100644 --- a/.github/workflows/cd_dev.yml +++ b/.github/workflows/cd_dev.yml @@ -3,8 +3,6 @@ name: Dev Server Deploy on: push: branches: ["dev"] - pull_request: - branches: [ "main", "dev" ] permissions: contents: read diff --git a/.github/workflows/cd_prod.yml b/.github/workflows/cd_prod.yml index 74456b6e..62e0dc97 100644 --- a/.github/workflows/cd_prod.yml +++ b/.github/workflows/cd_prod.yml @@ -3,8 +3,6 @@ name: Prod Server Deploy on: push: branches: ["prod"] - pull_request: - branches: [ "main", "dev" ] permissions: contents: read