name: Deploy on: workflow_run: workflows: ["CI"] types: [completed] branches: [main] concurrency: group: deploy-${{ github.ref }} cancel-in-progress: true jobs: deploy: name: build + deploy if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Bun uses: oven-sh/setup-bun@v2 with: bun-version: "1.3.14" - name: Install dependencies run: bun install --frozen-lockfile - name: Typecheck run: bun run typecheck - name: Build web app run: bun --cwd apps/web run build - name: Deploy to VPS over SSH env: SSH_DEPLOY_HOST: ${{ secrets.SSH_DEPLOY_HOST }} SSH_DEPLOY_PORT: ${{ secrets.SSH_DEPLOY_PORT }} SSH_DEPLOY_USER: ${{ secrets.SSH_DEPLOY_USER }} SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} run: | mkdir -p ~/.ssh echo "$SSH_DEPLOY_KEY" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -p "$SSH_DEPLOY_PORT" "$SSH_DEPLOY_HOST" >> ~/.ssh/known_hosts 2>/dev/null || true # -v for diagnostics, -o StrictHostKeyChecking=accept-new so first contact works ssh -v -o StrictHostKeyChecking=accept-new -i ~/.ssh/deploy_key -p "$SSH_DEPLOY_PORT" "$SSH_DEPLOY_USER@$SSH_DEPLOY_HOST" \ 'set -e cd /home/code/mcpedia git pull origin main /home/code/.bun/bin/bun install --frozen-lockfile /home/code/.bun/bin/bun --cwd apps/web run build sudo systemctl restart mcpedia-web mcpedia-api mcpedia-mcp mcpedia-worker sleep 3 systemctl --no-pager status mcpedia-web mcpedia-api mcpedia-mcp mcpedia-worker --no-legend'