snatching amp's walkthrough for my own purposes mwhahaha traverse.dunkirk.sh/diagram/6121f05c-a5ef-4ecf-8ffc-02534c5e767c

chore: use reusable deploy workflow from dots

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

dunkirk.sh dae1eba8 0d282521

verified
+17 -66
-66
.github/workflows/deploy-traverse.yaml
··· 1 - name: Deploy Traverse 2 - 3 - on: 4 - push: 5 - branches: 6 - - main 7 - workflow_dispatch: 8 - 9 - jobs: 10 - deploy: 11 - runs-on: ubuntu-latest 12 - steps: 13 - - uses: actions/checkout@v3 14 - 15 - - name: Setup Tailscale 16 - uses: tailscale/github-action@v3 17 - with: 18 - oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }} 19 - oauth-secret: ${{ secrets.TS_OAUTH_SECRET }} 20 - tags: tag:ci 21 - use-cache: "true" 22 - 23 - - name: Configure SSH 24 - run: | 25 - mkdir -p ~/.ssh 26 - echo "StrictHostKeyChecking no" >> ~/.ssh/config 27 - 28 - - name: Deploy to server 29 - run: | 30 - ssh traverse@terebithia << 'EOF' 31 - cd /var/lib/traverse/app 32 - git fetch --all 33 - git reset --hard origin/main 34 - bun install 35 - sudo /run/current-system/sw/bin/systemctl restart traverse.service 36 - EOF 37 - 38 - - name: Wait for service to start 39 - run: sleep 10 40 - 41 - - name: Health check 42 - run: | 43 - HEALTH_URL="https://traverse.dunkirk.sh" 44 - MAX_RETRIES=6 45 - RETRY_DELAY=5 46 - 47 - for i in $(seq 1 $MAX_RETRIES); do 48 - echo "Health check attempt $i/$MAX_RETRIES..." 49 - 50 - HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$HEALTH_URL" || echo "000") 51 - 52 - if [ "$HTTP_CODE" = "200" ]; then 53 - echo "✅ Service is healthy" 54 - exit 0 55 - fi 56 - 57 - echo "❌ Health check failed with HTTP $HTTP_CODE" 58 - 59 - if [ $i -lt $MAX_RETRIES ]; then 60 - echo "Retrying in ${RETRY_DELAY}s..." 61 - sleep $RETRY_DELAY 62 - fi 63 - done 64 - 65 - echo "❌ Health check failed after $MAX_RETRIES attempts" 66 - exit 1
···
+17
.github/workflows/deploy.yaml
···
··· 1 + name: Deploy Traverse 2 + 3 + on: 4 + push: 5 + branches: [main] 6 + workflow_dispatch: 7 + 8 + jobs: 9 + deploy: 10 + uses: taciturnaxolotl/dots/.github/workflows/deploy-service.yml@main 11 + with: 12 + service: traverse 13 + health_url: https://traverse.dunkirk.sh 14 + db_path: /var/lib/traverse/data/traverse.db 15 + secrets: 16 + TS_OAUTH_CLIENT_ID: ${{ secrets.TS_OAUTH_CLIENT_ID }} 17 + TS_OAUTH_SECRET: ${{ secrets.TS_OAUTH_SECRET }}