From f2f4ba0f12cff3004d5073abfb27db5e1ea3a9f4 Mon Sep 17 00:00:00 2001 From: Jisu Lim <69844138+Ji-soo708@users.noreply.github.com> Date: Sun, 29 Dec 2024 00:45:08 +0900 Subject: [PATCH] =?UTF-8?q?[YS-35]=20chore:=20CD=20=EC=8A=A4=ED=81=AC?= =?UTF-8?q?=EB=A6=BD=ED=8A=B8=20=EB=B0=8F=20=EB=8F=84=EC=BB=A4=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=B6=94=EA=B0=80=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: add cd script * chore: add docker-compose file --- .github/workflows/cd-backend.yml | 54 ++++++++++++++++++++++++++++++++ build.gradle.kts | 4 +++ docker-compose.yml | 12 +++++++ 3 files changed, 70 insertions(+) create mode 100644 .github/workflows/cd-backend.yml create mode 100644 docker-compose.yml diff --git a/.github/workflows/cd-backend.yml b/.github/workflows/cd-backend.yml new file mode 100644 index 00000000..16222d4b --- /dev/null +++ b/.github/workflows/cd-backend.yml @@ -0,0 +1,54 @@ +name: Java CD with Gradle and Docker + +on: + push: + branches: + - dev + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: make application-dev.yml + run: | + cd ./src/main/resources + touch ./application-dev.yml + echo "${{ secrets.DEV_YML }}" >> ./application-dev.yml + shell: bash + + - name: Grant execute permisson for gradlew + run: chmod +x gradlew + + - name: Build with Gradle (without Test) + run: ./gradlew clean build -x test --stacktrace + + - name: Docker Hub build & push + run: | + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} . + docker images + docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} + + - name: Deploy to Prod WAS Server + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.WAS_HOST }} + username: ${{ secrets.WAS_USERNAME }} + key: ${{ secrets.WAS_KEY }} + port: ${{ secrets.WAS_SSH_PORT }} + script: | + cd /home/ubuntu/dobby-backend/ + sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + sudo docker rm -f $(sudo docker ps -qa) + sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} + sudo docker-compose up -d + sudo docker image prune -f diff --git a/build.gradle.kts b/build.gradle.kts index fcac1659..0b8504e0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,6 +15,10 @@ java { } } +tasks.jar { + enabled = false +} + configurations { compileOnly { extendsFrom(configurations.annotationProcessor.get()) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..b2eedb49 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3' +services: + app: + container_name: dobby + user: "1000:1000" + image: jisoo708/dobby + expose: + - "8080" + ports: # host - container 포트 매핑 + - "8080:8080" + volumes: # host 로그 디렉토리 - container 로그 디렉토리 볼륨 마운트 + - ./logs:/logs