From 3a54aa17550f427497d8c4245c393e9b3a467f39 Mon Sep 17 00:00:00 2001 From: fixgramwork Date: Fri, 25 Jul 2025 00:52:52 +0900 Subject: [PATCH 1/2] =?UTF-8?q?bug(#38):=20ci/cd=20action=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Spring-develop-CD.yml | 65 +++++++++++++++++++++++++ .github/workflows/spring-cd.yml | 51 ------------------- .github/workflows/spring-ci.yaml | 61 +++++++++++------------ 3 files changed, 93 insertions(+), 84 deletions(-) create mode 100644 .github/workflows/Spring-develop-CD.yml delete mode 100644 .github/workflows/spring-cd.yml diff --git a/.github/workflows/Spring-develop-CD.yml b/.github/workflows/Spring-develop-CD.yml new file mode 100644 index 00000000..2dd67c6a --- /dev/null +++ b/.github/workflows/Spring-develop-CD.yml @@ -0,0 +1,65 @@ +name: Spring Deplot to EC2 + +on: + pull_request: + branches: ["develop"] + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + - name: application.properties 파일 설정 + run: | + mkdir -p src/main/resources + mkdir -p src/test/resources + echo "${{ secrets.APPLICATION_PROPERTIES }}" > ./src/main/resources/application.properties + echo "${{ secrets.TEST_APPLICATION_PROPERTIES }}" > ./src/test/resources/application.properties + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 + + - name: Build with Gradle Wrapper + run: ./gradlew clean build + + - name: 빌드된 파일 이름 변경하기 + run: mv ./build/libs/*SNAPSHOT.jar ./cd.jar + + - name: SCP로 EC2에 빌드된 파일 전송하기 + uses: appleboy/scp-action@master + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + source: cd.jar + target: /home/ubuntu/clue + + + deploy: + needs: build + runs-on: ubuntu-latest + + steps: + + - name: SSH로 EC2에 접속하기 + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + script_stop: true + script: | + cd clue + sudo fuser -k -n tcp 8080 || true + sudo nohup java -jar cd.jar > ./output.log 2>&1 & \ No newline at end of file diff --git a/.github/workflows/spring-cd.yml b/.github/workflows/spring-cd.yml deleted file mode 100644 index c8c65087..00000000 --- a/.github/workflows/spring-cd.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Spring CD - -on: - push: - branches: [develop] - -jobs: - build-and-deploy: - if: github.event.pull_request.merged == true - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: 17 - - - name: Grant execute permission to gradlew - run: chmod +x gradlew - - - name: Build Spring Project - run: ./gradlew clean build -x test - - - name: Set up SSH Agent - uses: webfactory/ssh-agent@v0.9.0 - with: - ssh-private-key: ${{ secrets.EC2_SSH_KEY }} - - - name: Copy JAR to EC2 - run: | - scp -o StrictHostKeyChecking=no build/libs/*.jar ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:/home/${{ secrets.EC2_USER }}/app/app.jar - - - name: Restart Spring App Container on EC2 - run: | - ssh -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << EOF - set -e - - cd /home/${{ secrets.EC2_USER }}/app - - # 기존 app.jar이 디렉토리일 경우 삭제 - if [ -d "app.jar" ]; then - rm -rf app.jar - fi - - # spring 서비스 컨테이너만 다시 빌드하고 재시작 test - docker compose up -d --build --force-recreate paletto - EOF diff --git a/.github/workflows/spring-ci.yaml b/.github/workflows/spring-ci.yaml index 3292e386..e189e6d4 100644 --- a/.github/workflows/spring-ci.yaml +++ b/.github/workflows/spring-ci.yaml @@ -2,42 +2,37 @@ name: Spring CI on: push: - branches: [ "*" ] + branches: ["*"] jobs: build: runs-on: ubuntu-latest steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' - - - name: Cache Gradle packages - 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: Grant permission to gradlew - run: chmod +x gradlew - - - name: Build with Gradle - run: ./gradlew build - - - name: Run tests - run: ./gradlew test - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 17 + + - name: Grant permission to gradlew + run: chmod +x gradlew + + - name: Cache Gradle packages + 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: Build with Gradle + run: ./gradlew build + + - name: Run tests + run: ./gradlew test \ No newline at end of file From 9952cf71e242da529c51c5ec42ff26a200c50ba9 Mon Sep 17 00:00:00 2001 From: fixgramwork Date: Fri, 25 Jul 2025 08:21:55 +0900 Subject: [PATCH 2/2] =?UTF-8?q?bug(#38):=20Ci,Cd=20=EB=A6=B4=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=20=EC=B5=9C=EC=8B=A0=EB=B2=84=EC=A0=84=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Spring-develop-CD.yml | 4 ++-- .github/workflows/spring-ci.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Spring-develop-CD.yml b/.github/workflows/Spring-develop-CD.yml index 2dd67c6a..02dde4e1 100644 --- a/.github/workflows/Spring-develop-CD.yml +++ b/.github/workflows/Spring-develop-CD.yml @@ -37,7 +37,7 @@ jobs: run: mv ./build/libs/*SNAPSHOT.jar ./cd.jar - name: SCP로 EC2에 빌드된 파일 전송하기 - uses: appleboy/scp-action@master + uses: appleboy/scp-action@v0.1.7 with: host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USER }} @@ -53,7 +53,7 @@ jobs: steps: - name: SSH로 EC2에 접속하기 - uses: appleboy/ssh-action@master + uses: appleboy/ssh-action@v0.1.7 with: host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USER }} diff --git a/.github/workflows/spring-ci.yaml b/.github/workflows/spring-ci.yaml index e189e6d4..88e6e4e9 100644 --- a/.github/workflows/spring-ci.yaml +++ b/.github/workflows/spring-ci.yaml @@ -22,7 +22,7 @@ jobs: run: chmod +x gradlew - name: Cache Gradle packages - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | ~/.gradle/caches