From 9bf2530fa2caa7d4798e0ef05aac9aafb6ed5f54 Mon Sep 17 00:00:00 2001 From: huncozyboy Date: Sat, 5 Oct 2024 05:48:56 +0900 Subject: [PATCH 1/2] =?UTF-8?q?cicd=201=EC=B0=A8=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/dev.yml | 75 +++++++++++++++++++++++++++++++++++++++ .gitignore | 1 + 2 files changed, 76 insertions(+) create mode 100644 .github/workflows/dev.yml diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml new file mode 100644 index 00000000..6d1ce051 --- /dev/null +++ b/.github/workflows/dev.yml @@ -0,0 +1,75 @@ +name: Weeth-BE CI/CD + +on: + push: + branches: [ "develop" ] + pull_request: + branches: [ "develop" ] + types: [opened, synchronize, reopened] + +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' + + # gradle caching + - name: Gradle Caching + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*gradle*','**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + # gradle 빌드 + - name: Build with Gradle Wrapper + run: ./gradlew build + + # 빌드된 JAR 파일 확인 + - name: List JAR files + run: ls build/libs + + # Docker build & push + - name: Docker build & push + run: | + docker login -u ${{ secrets.DEV_DOCKER_USER_EMAIL }} -p ${{ secrets.DEV_DOCKER_USER_TOKEN }} + docker build -t ${{ secrets.DEV_DOCKER_USER_NAME }}/weeth . + docker push ${{ secrets.DEV_DOCKER_USER_NAME }}/weeth + + deploy: + runs-on: ubuntu-latest + needs: build + if: github.ref == 'refs/heads/develop' + + steps: + - uses: actions/checkout@v4 + + - name: Deploy to server + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.DEV_EC2_SECRET_HOST }} + username: ubuntu + key: ${{ secrets.DEV_EC2_SECRET_PEM }} + envs: GITHUB_SHA + script: | + EXISTING_CONTAINER_ID=$(sudo docker ps -q -f "publish=8080" -f "status=running") + if [ ! -z "$EXISTING_CONTAINER_ID" ]; then + sudo docker stop $EXISTING_CONTAINER_ID + sudo docker rm $EXISTING_CONTAINER_ID + fi + + sudo docker pull ${{ secrets.DEV_DOCKER_USER_NAME }}/weeth + sudo docker run --name spring -d -p 8080:8080 --env-file ./weeth-dev.env -e TZ=Asia/Seoul ${{ secrets.DEV_DOCKER_USER_NAME }}/weeth + sudo docker image prune -a -f diff --git a/.gitignore b/.gitignore index 99c0e035..6f389cf3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ HELP.md +weeth-dev.env .gradle build/ !gradle/wrapper/gradle-wrapper.jar From 99000ee284ac5cef3c1f370c9783987c62ccb57c Mon Sep 17 00:00:00 2001 From: huncozyboy Date: Sat, 5 Oct 2024 21:13:26 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=EA=B9=83=20=EC=9D=B4=EA=B7=B8?= =?UTF-8?q?=EB=85=B8=EC=96=B4=20=ED=8C=8C=EC=9D=BC=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=EB=8F=84=EC=BB=A4=ED=8C=8C=EC=9D=BC=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/dev.yml | 9 +++++++-- .gitignore | 1 - 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 6d1ce051..aee2afe8 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -45,13 +45,13 @@ jobs: - name: Docker build & push run: | docker login -u ${{ secrets.DEV_DOCKER_USER_EMAIL }} -p ${{ secrets.DEV_DOCKER_USER_TOKEN }} - docker build -t ${{ secrets.DEV_DOCKER_USER_NAME }}/weeth . + docker build -f Dockerfile-dev -t ${{ secrets.DEV_DOCKER_USER_NAME }}/weeth . docker push ${{ secrets.DEV_DOCKER_USER_NAME }}/weeth deploy: runs-on: ubuntu-latest needs: build - if: github.ref == 'refs/heads/develop' + if: github.event_name == 'push' steps: - uses: actions/checkout@v4 @@ -69,6 +69,11 @@ jobs: sudo docker stop $EXISTING_CONTAINER_ID sudo docker rm $EXISTING_CONTAINER_ID fi + + EXISTING_CONTAINER_ID=$(sudo docker ps -q -f "status=exited") + if [ ! -z "$EXISTING_CONTAINER_ID" ]; then + sudo docker rm $EXISTING_CONTAINER_ID + fi sudo docker pull ${{ secrets.DEV_DOCKER_USER_NAME }}/weeth sudo docker run --name spring -d -p 8080:8080 --env-file ./weeth-dev.env -e TZ=Asia/Seoul ${{ secrets.DEV_DOCKER_USER_NAME }}/weeth diff --git a/.gitignore b/.gitignore index 6f389cf3..99c0e035 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ HELP.md -weeth-dev.env .gradle build/ !gradle/wrapper/gradle-wrapper.jar