image cache on cloudflare r2

feat: fix the deploy

dunkirk.sh 16fa9032 6cb410a4

verified
Changed files
+41 -6
.github
workflows
src
+40 -5
.github/workflows/deploy.yaml
··· 28 28 - name: Deploy to terebithia 29 29 run: | 30 30 ssh l4@terebithia << 'EOF' 31 - set -e 32 31 cd /var/lib/l4/app 33 - sudo -u l4 git pull 34 - sudo -u l4 bun install 35 - sudo systemctl restart l4.service 36 - echo "✓ L4 deployed successfully" 32 + git fetch --all 33 + git reset --hard origin/main 34 + bun install 35 + sudo /run/current-system/sw/bin/systemctl restart l4.service 37 36 EOF 37 + - name: Health check 38 + run: | 39 + HEALTH_URL="https://l4.dunkirk.sh/health" 40 + MAX_RETRIES=6 41 + RETRY_DELAY=5 42 + 43 + for i in $(seq 1 $MAX_RETRIES); do 44 + echo "Health check attempt $i/$MAX_RETRIES..." 45 + 46 + RESPONSE=$(curl -s -w "\n%{http_code}" "$HEALTH_URL" || echo "000") 47 + HTTP_CODE=$(echo "$RESPONSE" | tail -n1) 48 + BODY=$(echo "$RESPONSE" | head -n-1) 49 + 50 + if [ "$HTTP_CODE" = "200" ]; then 51 + # Validate response contains "status":"ok" 52 + if echo "$BODY" | grep -q '"status":"ok"'; then 53 + echo "✅ Service is healthy (HTTP $HTTP_CODE)" 54 + echo "Response: $BODY" 55 + exit 0 56 + else 57 + echo "❌ Health check returned 200 but invalid body" 58 + echo "Response: $BODY" 59 + fi 60 + else 61 + echo "❌ Health check failed with HTTP $HTTP_CODE" 62 + echo "Response: $BODY" 63 + fi 64 + 65 + if [ $i -lt $MAX_RETRIES ]; then 66 + echo "Retrying in ${RETRY_DELAY}s..." 67 + sleep $RETRY_DELAY 68 + fi 69 + done 70 + 71 + echo "❌ Health check failed after $MAX_RETRIES attempts" 72 + exit 1
+1 -1
src/index.ts
··· 61 61 62 62 "/health": { 63 63 async GET(request) { 64 - return new Response("OK", { status: 200 }); 64 + return Response.json({ status: "ok" }); 65 65 }, 66 66 }, 67 67