diff --git a/.github/workflows/production-deploy.yml b/.github/workflows/production-deploy.yml new file mode 100644 index 000000000..de71a2c8d --- /dev/null +++ b/.github/workflows/production-deploy.yml @@ -0,0 +1,93 @@ +name: Demo deploy + +on: + push: + branches: ["demo"] + +jobs: + docker-build-and-push-client: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build Client Docker image + run: | + docker build \ + -t ghcr.io/bluewave-labs/checkmate:frontend-demo \ + -f ./docker/prod/client.Dockerfile \ + --label org.opencontainers.image.source=https://github.com/bluewave-labs/checkmate \ + . + + - name: Push Client Docker image + run: docker push ghcr.io/bluewave-labs/checkmate:frontend-demo + + docker-build-and-push-server: + needs: docker-build-and-push-client + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build Server Docker image + run: | + docker build \ + -t ghcr.io/bluewave-labs/checkmate:backend-demo \ + -f ./docker/prod/server.Dockerfile \ + --label org.opencontainers.image.source=https://github.com/bluewave-labs/checkmate \ + . + + - name: Push Server Docker image + run: docker push ghcr.io/bluewave-labs/checkmate:backend-demo + + - name: Build Mongo Docker image + run: | + docker build \ + -t ghcr.io/bluewave-labs/checkmate:mongo-demo \ + -f ./docker/prod/mongoDB.Dockerfile \ + --label org.opencontainers.image.source=https://github.com/bluewave-labs/checkmate \ + . + + - name: Push MongoDB Docker image + run: docker push ghcr.io/bluewave-labs/checkmate:mongo-demo + + - name: Build Redis Docker image + run: | + docker build \ + -t ghcr.io/bluewave-labs/checkmate:redis-demo \ + -f ./docker/prod/redis.Dockerfile \ + --label org.opencontainers.image.source=https://github.com/bluewave-labs/checkmate \ + . + + - name: Push Redis Docker image + run: docker push ghcr.io/bluewave-labs/checkmate:redis-demo + + deploy-to-demo: + needs: docker-build-and-push-server + runs-on: ubuntu-latest + steps: + - name: SSH into server and restart container using Docker Compose + uses: appleboy/ssh-action@v1.2.2 + with: + host: ${{ secrets.DEMO_SERVER_HOST }} + username: ${{ secrets.DEMO_SERVER_USER }} + key: ${{ secrets.DEMO_SERVER_SSH_KEY }} + script: | + cd checkmate/docker/prod + docker compose down + docker compose pull + docker compose up -d