diff --git a/.github/workflows/Spring-develop-CD.yml b/.github/workflows/Spring-develop-CD.yml new file mode 100644 index 00000000..02dde4e1 --- /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@v0.1.7 + 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@v0.1.7 + 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..88e6e4e9 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@v4 + 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