From 5dbcc1af3dd183e36660b8060241105a00857cbf Mon Sep 17 00:00:00 2001 From: leeuihyun Date: Tue, 14 Oct 2025 18:02:15 +0900 Subject: [PATCH 1/4] =?UTF-8?q?chore=20:=20cd=20=EC=A4=80=EB=B9=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle.yml | 48 +++++++++++++++---- Dockerfile | 4 ++ .../cdtest/controller/CdController.java | 16 +++++++ .../example/onederful/filter/JwtFilter.java | 1 + 4 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 Dockerfile create mode 100644 src/main/java/com/example/onederful/domain/cdtest/controller/CdController.java diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 06372dd..b030985 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -1,18 +1,14 @@ name: Java CI with Gradle - on: push: branches: [ "main" ] pull_request: branches: [ "main" ] - jobs: - build: - + build-docker-image: runs-on: ubuntu-latest permissions: contents: read - steps: - uses: actions/checkout@v4 - name: Set up JDK 17 @@ -20,9 +16,43 @@ jobs: with: java-version: '17' distribution: 'temurin' - - name: Setup Gradle - uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 - + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + - name: Grant execute permission for gradlew + run: chmod +x gradlew + # Spring Boot 어플리케이션 Build - name: Build with Gradle Wrapper - run: ./gradlew build -x test \ No newline at end of file + run: ./gradlew build -x test + env: + DB_PASSWORD : ${{ secrets.DB_PASSWORD }} + DB_URL : ${{ secrets.DB_URL }} + DB_USERNAME : ${{ secrets.DB_USERNAME }} + SECRET_KEY : ${{ secrets.SECRET_KEY }} + # Docker 이미지 Build + - name: docker image build + run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test . + # DockerHub Login (push 하기 위해) + - name: docker login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + # Docker hub 로 push + - name: Docker Hub push + run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test +# # 위 과정에서 푸시한 이미지를 ec2에서 풀받아서 실행 +# run-docker-image-on-ec2: +# needs: build-docker-image +# runs-on: self-hosted +# steps: +# - name: docker pull +# run : sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test +# - name: docker stop container +# run: | +# if [ $(sudo docker ps -a -q -f name=spring-cicd-test) ]; then +# sudo docker stop spring-cicd-test +# fi +# - name: docker run new container +# run: sudo docker run --rm -it -d -p 80:8080 --name spring-cicd-test ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test +# - name: delete old docker image +# run: sudo docker system prune -f \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1faad58 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM openjdk:17 +ARG JAR_FILE=build/libs/*.jar +COPY ${JAR_FILE} app.jar +ENTRYPOINT ["java","-jar","/app.jar"] \ No newline at end of file diff --git a/src/main/java/com/example/onederful/domain/cdtest/controller/CdController.java b/src/main/java/com/example/onederful/domain/cdtest/controller/CdController.java new file mode 100644 index 0000000..6b0bb81 --- /dev/null +++ b/src/main/java/com/example/onederful/domain/cdtest/controller/CdController.java @@ -0,0 +1,16 @@ +package com.example.onederful.domain.cdtest.controller; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/test") +public class CdController { + + @GetMapping + public ResponseEntity test() { + return ResponseEntity.ok("cd successful"); + } +} diff --git a/src/main/java/com/example/onederful/filter/JwtFilter.java b/src/main/java/com/example/onederful/filter/JwtFilter.java index df25a03..76e0139 100644 --- a/src/main/java/com/example/onederful/filter/JwtFilter.java +++ b/src/main/java/com/example/onederful/filter/JwtFilter.java @@ -38,6 +38,7 @@ public void doFilter( requestURI.startsWith("/swagger-ui") || requestURI.startsWith("/v3/api-docs") || requestURI.startsWith("/swagger-resources") || + requestURI.startsWith("/api/test") || requestURI.startsWith("/webjars")) { filterChain.doFilter(servletRequest, servletResponse); return; From 25a6e08a94f67a2979c32db2e5dc8d32bed851a9 Mon Sep 17 00:00:00 2001 From: leeuihyun Date: Tue, 14 Oct 2025 18:11:35 +0900 Subject: [PATCH 2/4] =?UTF-8?q?chore=20:=20cd=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index b030985..5da36b2 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -30,7 +30,7 @@ jobs: SECRET_KEY : ${{ secrets.SECRET_KEY }} # Docker 이미지 Build - name: docker image build - run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test . + run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test:latest . # DockerHub Login (push 하기 위해) - name: docker login uses: docker/login-action@v2 From 018e70e11e25e040910edced70b9ec79837c5ee4 Mon Sep 17 00:00:00 2001 From: leeuihyun Date: Tue, 14 Oct 2025 18:57:20 +0900 Subject: [PATCH 3/4] chore : cd self host --- .github/workflows/gradle.yml | 42 +++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 5da36b2..3d384d7 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -20,7 +20,7 @@ jobs: uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 - name: Grant execute permission for gradlew run: chmod +x gradlew - # Spring Boot 어플리케이션 Build + # Spring Boot 어플리케이션 Build. - name: Build with Gradle Wrapper run: ./gradlew build -x test env: @@ -40,19 +40,27 @@ jobs: # Docker hub 로 push - name: Docker Hub push run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test -# # 위 과정에서 푸시한 이미지를 ec2에서 풀받아서 실행 -# run-docker-image-on-ec2: -# needs: build-docker-image -# runs-on: self-hosted -# steps: -# - name: docker pull -# run : sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test -# - name: docker stop container -# run: | -# if [ $(sudo docker ps -a -q -f name=spring-cicd-test) ]; then -# sudo docker stop spring-cicd-test -# fi -# - name: docker run new container -# run: sudo docker run --rm -it -d -p 80:8080 --name spring-cicd-test ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test -# - name: delete old docker image -# run: sudo docker system prune -f \ No newline at end of file + + # EC2에서 컨테이너 실행 + run-docker-image-on-ec2: + needs: build-docker-image + runs-on: self-hosted + steps: + - name: docker pull + run: sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test:latest + - name: docker stop old container + run: | + if [ $(sudo docker ps -a -q -f name=spring-cicd-test) ]; then + sudo docker stop spring-cicd-test + fi + - name: docker run new container with env + run: | + sudo docker run --rm -d -p 80:8080 \ + --name spring-cicd-test \ + -e DB_URL=${{ secrets.DB_URL }} \ + -e DB_USERNAME=${{ secrets.DB_USERNAME }} \ + -e DB_PASSWORD=${{ secrets.DB_PASSWORD }} \ + -e SECRET_KEY=${{ secrets.SECRET_KEY }} \ + ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test:latest + - name: delete old docker images + run: sudo docker system prune -f \ No newline at end of file From 65f7fa1d8d4c096ee6386e4f02f021f9ab277b9a Mon Sep 17 00:00:00 2001 From: leeuihyun Date: Wed, 15 Oct 2025 13:38:36 +0900 Subject: [PATCH 4/4] chore : cd test --- .github/workflows/gradle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 3d384d7..62acf24 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -20,7 +20,7 @@ jobs: uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 - name: Grant execute permission for gradlew run: chmod +x gradlew - # Spring Boot 어플리케이션 Build. + # Spring Boot 어플리케이션 Build.. - name: Build with Gradle Wrapper run: ./gradlew build -x test env: