|  | 
| 5 | 5 |     workflows: ["KTU Bot Test Deploy"] | 
| 6 | 6 |     types: | 
| 7 | 7 |       - completed | 
|  | 8 | +  push: | 
|  | 9 | +    branches: | 
|  | 10 | +      - "prod" | 
| 8 | 11 | 
 | 
| 9 | 12 | jobs: | 
| 10 |  | -  on-failure: | 
| 11 |  | -    runs-on: ubuntu-latest | 
| 12 |  | -    if: github.ref == 'refs/heads/prod' && github.event.workflow_run.conclusion == 'failure' | 
| 13 |  | -    steps: | 
| 14 |  | -      - run: echo "Test deployment failed.. Skipping prod deploy.." && exit 1 | 
| 15 |  | - | 
| 16 |  | -  on-success: | 
| 17 |  | -    runs-on: ubuntu-latest | 
| 18 |  | -    if: github.ref == 'refs/heads/prod' && github.event.workflow_run.conclusion == 'success' | 
| 19 |  | -    steps: | 
| 20 |  | -      - run: echo "Test deployment successful.. Deploying prod..." | 
| 21 |  | - | 
| 22 |  | -  build-and-push: | 
| 23 |  | -    name: Build and push docker image | 
|  | 13 | +  deploy: | 
| 24 | 14 |     runs-on: ubuntu-latest | 
| 25 |  | -    needs: on-success | 
| 26 |  | - | 
|  | 15 | +    if: github.event.workflow_run.conclusion == 'success' | 
| 27 | 16 |     steps: | 
| 28 | 17 |       - name: Checkout repository | 
| 29 | 18 |         uses: actions/checkout@v4 | 
| 30 | 19 | 
 | 
| 31 |  | -      - name: Login to docker hub | 
|  | 20 | +      - name: Login to Docker Hub | 
| 32 | 21 |         uses: docker/login-action@v2 | 
| 33 | 22 |         with: | 
| 34 | 23 |           username: ${{ secrets.DOCKERHUB_USERNAME }} | 
| 35 | 24 |           password: ${{ secrets.DOCKERHUB_TOKEN }} | 
| 36 | 25 | 
 | 
| 37 |  | -      - name: Build and push docker image | 
| 38 |  | -        uses: docker/build-push-action@v4 | 
| 39 |  | -        with: | 
| 40 |  | -          context: . | 
| 41 |  | -          push: true | 
| 42 |  | -          tags: ${{ secrets.DOCKERHUB_USERNAME }}/ktu-bot:${{ github.sha }} | 
| 43 |  | - | 
| 44 |  | -  deploy: | 
| 45 |  | -    name: Deploy docker container to VPS | 
| 46 |  | -    runs-on: ubuntu-latest | 
| 47 |  | -    needs: build-and-push | 
| 48 |  | - | 
| 49 |  | -    steps: | 
| 50 |  | -      - name: Checkout repository | 
| 51 |  | -        uses: actions/checkout@v4 | 
| 52 |  | - | 
| 53 |  | -      - name: Deploy to VPS | 
| 54 |  | -        uses: appleboy/ssh-action@master | 
| 55 |  | -        with: | 
| 56 |  | -          host: ${{ secrets.HOST }} | 
| 57 |  | -          username: ${{ secrets.USERNAME }} | 
| 58 |  | -          key: ${{ secrets.SSH_PRIVATE_KEY }} | 
| 59 |  | -          port: 22 | 
| 60 |  | -          script: | | 
| 61 |  | -            docker pull ${{ secrets.DOCKERHUB_USERNAME }}/ktu-bot:${{ github.sha }} | 
| 62 |  | -            docker tag ${{ secrets.DOCKERHUB_USERNAME }}/ktu-bot:${{ github.sha }} ktu-bot:latest | 
| 63 |  | -            docker stop ktu-bot || true | 
| 64 |  | -            docker stop redis-queue-db || true | 
| 65 |  | -            docker rm ktu-bot || true | 
| 66 |  | -            docker rm redis-queue-db || true | 
| 67 |  | -            docker network rm ktu-bot-network || true | 
| 68 |  | -            docker network create ktu-bot-network || true | 
| 69 |  | -            docker run -d --restart always -p 6379:6379 --network ktu-bot-network --network-alias redis-queue-db --name redis-queue-db redis | 
| 70 |  | -            docker run -d \ | 
| 71 |  | -              --restart always \ | 
| 72 |  | -              -p 5000:5000 \ | 
| 73 |  | -              -e TZ=Asia/Kolkata \ | 
| 74 |  | -              --network ktu-bot-network \ | 
| 75 |  | -              -e ENV_TYPE=${{ secrets.ENV_TYPE }} \ | 
| 76 |  | -              -e ADMIN_ID=${{ secrets.ADMIN_ID }} \ | 
| 77 |  | -              -e WEBHOOK_DOMAIN=${{ secrets.WEBHOOK_DOMAIN }} \ | 
| 78 |  | -              -e WEBHOOK_PORT=${{ secrets.WEBHOOK_PORT }} \ | 
| 79 |  | -              -e BOT_TOKEN=${{ secrets.BOT_TOKEN }} \ | 
| 80 |  | -              -e FIREBASE_SERVICE_ACCOUNT="${{ secrets.FIREBASE_SERVICE_ACCOUNT }}" \ | 
| 81 |  | -              -e NODE_ENV=production \ | 
| 82 |  | -              -e HUGGING_FACE_TOKEN="${{ secrets.HUGGING_FACE_TOKEN }}" \ | 
| 83 |  | -              -e FIREBASE_STORAGE_BUCKET="${{ secrets.FIREBASE_STORAGE_BUCKET }}" \ | 
| 84 |  | -              -e LATEST_COMMIT=${{ github.sha }} \ | 
| 85 |  | -              -e UPTIME_ROBOT_API_KEY=${{ secrets.UPTIME_ROBOT_API_KEY }} \ | 
| 86 |  | -              -e ORIGIN_URL=${{ secrets.ORIGIN_URL }} \ | 
| 87 |  | -              --name ktu-bot \ | 
| 88 |  | -              -v /var/log/ktu-bot:/var/log/ktu-bot \ | 
| 89 |  | -              ktu-bot:latest | 
|  | 26 | +      - name: Pull and Deploy | 
|  | 27 | +        run: | | 
|  | 28 | +          docker pull ${{ secrets.DOCKERHUB_USERNAME }}/ktu-bot:${{ github.sha }} | 
|  | 29 | +          docker tag ${{ secrets.DOCKERHUB_USERNAME }}/ktu-bot:${{ github.sha }} ktu-bot:latest | 
|  | 30 | +          docker stop ktu-bot || true | 
|  | 31 | +          docker rm ktu-bot || true | 
|  | 32 | +          docker run -d --restart always \ | 
|  | 33 | +            -p 5000:5000 \ | 
|  | 34 | +            -e TZ=Asia/Kolkata \ | 
|  | 35 | +            -e ENV_TYPE=${{ secrets.ENV_TYPE }} \ | 
|  | 36 | +            -e ADMIN_ID=${{ secrets.ADMIN_ID }} \ | 
|  | 37 | +            -e BOT_TOKEN=${{ secrets.BOT_TOKEN }} \ | 
|  | 38 | +            -e FIREBASE_SERVICE_ACCOUNT="${{ secrets.FIREBASE_SERVICE_ACCOUNT }}" \ | 
|  | 39 | +            -e HUGGING_FACE_TOKEN="${{ secrets.HUGGING_FACE_TOKEN }}" \ | 
|  | 40 | +            -e FIREBASE_STORAGE_BUCKET="${{ secrets.FIREBASE_STORAGE_BUCKET }}" \ | 
|  | 41 | +            --name ktu-bot ktu-bot:latest | 
0 commit comments