From d6f999aa36c82cbbce420017bd7ca2ad245678ec Mon Sep 17 00:00:00 2001 From: Taeho KIM Date: Wed, 16 Jul 2025 09:45:47 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20cd=EA=B5=AC=EC=B6=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle.yml | 61 +++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 7d9e38d..80191e4 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -7,7 +7,7 @@ on: branches: [ "develop" ] jobs: - test: + build: runs-on: ubuntu-latest steps: - name: Checkout code @@ -24,3 +24,62 @@ jobs: - name: Build without running tests run: ./gradlew build -x test + + deploy: + needs: build + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/develop' + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v3 + with: + java-version: '21' + distribution: 'temurin' + + - name: Build application + run: ./gradlew build -x test + + - name: Build Docker image + run: | + sudo docker build -t ${{ secrets.DOCKER_USERNAME }}/my-app:latest . + sudo docker build -t ${{ secrets.DOCKER_USERNAME }}/my-app:${{ github.sha }} . + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Push Docker image + run: | + sudo docker push ${{ secrets.DOCKER_USERNAME }}/my-app:latest + sudo docker push ${{ secrets.DOCKER_USERNAME }}/my-app:${{ github.sha }} + + - name: Deploy to EC2 + uses: appleboy/ssh-action@v0.1.7 + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_PRIVATE_KEY }} + port: 22 + script: | + # 기존 컨테이너 중지 및 삭제 + sudo docker stop my-app || true + sudo docker rm my-app || true + + # 새 이미지 pull + sudo docker pull ${{ secrets.DOCKER_USERNAME }}/my-app:latest + + # 새 컨테이너 실행 + sudo docker run -d --name my-app -p 8080:8080 \ + -e SPRING_PROFILES_ACTIVE=prod \ + ${{ secrets.DOCKER_USERNAME }}/my-app:latest + + # 이미지 정리 + sudo docker image prune -f + + sudo docker ps