From 97589ac26405e865ce1411d1eb47525efb7e64e3 Mon Sep 17 00:00:00 2001 From: seungheon123 Date: Sat, 9 Nov 2024 15:53:28 +0900 Subject: [PATCH] =?UTF-8?q?:globe=5Fwith=5Fmeridians:=20[Ci]=20action=20sc?= =?UTF-8?q?ript=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/api-deploy.yml | 75 ++++++++++++++++++++++++++++++++ apps/api/Dockerfile | 2 +- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/api-deploy.yml diff --git a/.github/workflows/api-deploy.yml b/.github/workflows/api-deploy.yml new file mode 100644 index 00000000..1701cc6a --- /dev/null +++ b/.github/workflows/api-deploy.yml @@ -0,0 +1,75 @@ +name: API Server Ci/Cd +on: + push: + branches: + - Ci/69 + - develop + paths: +# - 'apps/api/**' +jobs: + build-and-push: + runs-on: ubuntu-latest + + env: + IMAGE_NAME: api-camon + DB_HOST: ${{ secrets.DB_HOST }} + DB_PORT: ${{ secrets.DB_PORT }} + DB_USERNAME: ${{ secrets.DB_USERNAME }} + DB_PASSWORD: ${{ secrets.DB_PASSWORD }} + DB_NAME: ${{ secrets.DB_NAME }} + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Log in to Ncloud Container Registry + env: + USERNAME: ${{ secrets.NCLOUD_ACCESS_KEY }} + PASSWORD: ${{ secrets.NCLOUD_SECRET_KEY }} + REGISTRY_URL: ${{ secrets.NCLOUD_REGISTRY_URL }} + run: | + echo "$PASSWORD" | docker login -u "$USERNAME" "$REGISTRY_URL" --password-stdin + + - name: Build Docker image + working-directory: ./apps/api + run: | + docker build -t ${{ secrets.NCLOUD_REGISTRY_URL }}/$IMAGE_NAME:latest \ + --build-arg DB_HOST=$DB_HOST \ + --build-arg DB_PORT=$DB_PORT \ + --build-arg DB_USERNAME=$DB_USERNAME \ + --build-arg DB_PASSWORD=$DB_PASSWORD \ + --build-arg DB_NAME=$DB_NAME \ + . + + - name: Push to Ncloud Container Registry + run: | + docker push ${{ secrets.NCLOUD_REGISTRY_URL }}/$IMAGE_NAME:latest + + deploy-and-run: + runs-on: ubuntu-latest + needs: build-and-push + steps: + - name: SSH and deploy + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ secrets.SERVER_IP }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_SERVER_KEY }} + port: 22 + script: | + sudo docker login -u ${{secrets.NCLOUD_ACCESS_KEY}} -p ${{ secrets.NCLOUD_SECRET_KEY }} ${{ secrets.NCLOUD_REGISTRY_URL }} + sudo docker stop api-camon || true + sudo docker rm api-camon || true + sudo docker rmi ${{ secrets.NCLOUD_REGISTRY_URL }}/$IMAGE_NAME:latest || true + sudo docker pull ${{ secrets.NCLOUD_REGISTRY_URL }}/$IMAGE_NAME:latest + sudo docker run -d --name api-camon -p 3000:3000 ${{ secrets.NCLOUD_REGISTRY_URL }}/api-camon:latest + + - name: Check container status + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ secrets.SERVER_IP }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_SERVER_KEY }} + port: 22 + script: | + sudo docker ps -f name=api-camon \ No newline at end of file diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile index 844a0087..6d52908e 100644 --- a/apps/api/Dockerfile +++ b/apps/api/Dockerfile @@ -29,7 +29,7 @@ COPY . . # API 서버 빌드 #RUN pnpm run build -RUN pnpm install --frozen-lockfile --prod=false +RUN pnpm build --frozen-lockfile --prod=false # 포트 노출 EXPOSE 3000