From 6dbab233290defe3bec9a699fab90568ccf9d349 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 5 Feb 2026 21:48:53 +0100 Subject: [PATCH] ci: Serve firmware from runner for OTA deployment Instead of having ESP devices download from Gitea (TLS cert issues), the runner now serves firmware via local HTTP server and triggers OTA with the local URL. --- .gitea/workflows/lint.yml | 47 +++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/.gitea/workflows/lint.yml b/.gitea/workflows/lint.yml index bef5d7f..5a71602 100644 --- a/.gitea/workflows/lint.yml +++ b/.gitea/workflows/lint.yml @@ -106,30 +106,39 @@ jobs: -F "attachment=@get-started/csi_recv_router/build/csi_recv_router.bin" \ "$API_URL/repos/$REPO/releases/$RELEASE_ID/assets?name=csi_recv_router.bin" - # Store release URL for OTA - FIRMWARE_URL="https://git.mymx.me/$REPO/releases/download/$TAG/csi_recv_router.bin" - echo "Firmware URL: $FIRMWARE_URL" - echo "$FIRMWARE_URL" > /tmp/firmware_url.txt - - name: Deploy via OTA run: | - FIRMWARE_URL=$(cat /tmp/firmware_url.txt) - echo "Using firmware URL: $FIRMWARE_URL" + SENSORS="muddy-storm:192.168.129.29 amber-maple:192.168.129.30 hollow-acorn:192.168.129.31" + FIRMWARE_PATH="get-started/csi_recv_router/build/csi_recv_router.bin" + OTA_PORT=8899 - # Deploy to muddy-storm - echo "=== Deploying to muddy-storm (192.168.129.29) ===" - echo "OTA $FIRMWARE_URL" | nc -u -w 2 192.168.129.29 5501 || true - sleep 30 + # Get runner IP (first non-loopback interface) + RUNNER_IP=$(hostname -I | awk '{print $1}') + echo "Runner IP: $RUNNER_IP" - # Deploy to amber-maple - echo "=== Deploying to amber-maple (192.168.129.30) ===" - echo "OTA $FIRMWARE_URL" | nc -u -w 2 192.168.129.30 5501 || true - sleep 30 + # Start HTTP server to serve firmware + cd get-started/csi_recv_router/build + python3 -m http.server $OTA_PORT & + HTTP_PID=$! + sleep 2 - # Deploy to hollow-acorn - echo "=== Deploying to hollow-acorn (192.168.129.31) ===" - echo "OTA $FIRMWARE_URL" | nc -u -w 2 192.168.129.31 5501 || true - sleep 30 + FIRMWARE_URL="http://${RUNNER_IP}:${OTA_PORT}/csi_recv_router.bin" + echo "Firmware URL: $FIRMWARE_URL" + + # Verify server is running + curl -sI "http://localhost:${OTA_PORT}/csi_recv_router.bin" | head -1 + + # Deploy to each sensor + for entry in $SENSORS; do + NAME="${entry%%:*}" + IP="${entry##*:}" + echo "=== Deploying to $NAME ($IP) ===" + echo "OTA $FIRMWARE_URL" | nc -u -w 2 "$IP" 5501 || true + sleep 45 + done + + # Stop HTTP server + kill $HTTP_PID 2>/dev/null || true echo "=== Deployment complete ==="