fix(ci): upgrade Firmware CI to IDF v5.4, replace xxd with od (#327)

- Container: espressif/idf:v5.2 → v5.4 (matches QEMU workflow)
- Replace xxd calls with od (xxd not available in IDF container)
- Add ota_data_initial.bin to artifact upload
- Extend artifact retention to 90 days

The xxd:not-found error was blocking all Firmware CI builds since the
container migration. This unblocks binary artifact generation for
release assets.

Closes #327

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
ruv 2026-03-28 11:01:44 -04:00
parent 3c02f6cfb0
commit 9a074bdf4f
1 changed files with 6 additions and 4 deletions

View File

@ -15,7 +15,7 @@ jobs:
name: Build ESP32-S3 Firmware
runs-on: ubuntu-latest
container:
image: espressif/idf:v5.2
image: espressif/idf:v5.4
steps:
- uses: actions/checkout@v4
@ -54,9 +54,10 @@ jobs:
fi
# Check partition table magic (0xAA50 at offset 0).
# Use od instead of xxd (xxd not available in espressif/idf container).
PT=build/partition_table/partition-table.bin
if [ -f "$PT" ]; then
MAGIC=$(xxd -l2 -p "$PT")
MAGIC=$(od -A n -t x1 -N 2 "$PT" | tr -d ' ')
if [ "$MAGIC" != "aa50" ]; then
echo "::warning::Partition table magic mismatch: $MAGIC (expected aa50)"
ERRORS=$((ERRORS + 1))
@ -71,7 +72,7 @@ jobs:
fi
# Verify non-zero data in binary (not all 0xFF padding).
NONZERO=$(xxd -l 1024 -p "$BIN" | tr -d 'f' | wc -c)
NONZERO=$(od -A n -t x1 -N 1024 "$BIN" | tr -d ' f\n' | wc -c)
if [ "$NONZERO" -lt 100 ]; then
echo "::error::Binary appears to be mostly padding (non-zero chars: $NONZERO)"
ERRORS=$((ERRORS + 1))
@ -97,4 +98,5 @@ jobs:
firmware/esp32-csi-node/build/esp32-csi-node.bin
firmware/esp32-csi-node/build/bootloader/bootloader.bin
firmware/esp32-csi-node/build/partition_table/partition-table.bin
retention-days: 30
firmware/esp32-csi-node/build/ota_data_initial.bin
retention-days: 90