Deploy to VPS #201
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy to VPS | |
| on: | |
| workflow_run: | |
| workflows: ["Publish to Docker Hub"] | |
| types: [completed] | |
| workflow_dispatch: | |
| jobs: | |
| deploy: | |
| if: >- | |
| (github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success') | |
| && vars.DEPLOY_ENABLED == 'true' | |
| name: Deploy OmniRoute to VPS | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Deploy via SSH | |
| uses: appleboy/ssh-action@v1 | |
| continue-on-error: true | |
| with: | |
| host: ${{ secrets.VPS_HOST }} | |
| username: ${{ secrets.VPS_USER }} | |
| key: ${{ secrets.VPS_SSH_KEY }} | |
| port: 22 | |
| timeout: 30s | |
| command_timeout: 5m | |
| script: | | |
| echo "=== Updating OmniRoute ===" | |
| npm install -g omniroute@latest 2>&1 | |
| INSTALLED_VERSION=$(omniroute --version 2>/dev/null || echo "unknown") | |
| echo "Installed version: $INSTALLED_VERSION" | |
| echo "=== Restarting PM2 ===" | |
| pm2 restart omniroute || pm2 start omniroute --name omniroute -- --port 20128 | |
| pm2 save | |
| echo "=== Health Check ===" | |
| sleep 3 | |
| curl -sf http://localhost:20128/api/settings > /dev/null && echo "✅ OmniRoute is healthy" || echo "❌ Health check failed" | |
| echo "=== Deploy complete ===" |