From 528c423d54315f1791311f642bdb561aa7a13e7a 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 | 82 ++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) 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..2331311d --- /dev/null +++ b/.github/workflows/api-deploy.yml @@ -0,0 +1,82 @@ +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 + 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 \ + ./apps/api + + - 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: 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: 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: | + mkdir -p api + cd api + sudo docker pull ${{ secrets.NCLOUD_REGISTRY_URL }}/$IMAGE_NAME:latest + sudo docker stop api-camon || true + sudo docker rm api-camon || true + 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