fix(firmware): bust Kaniko cache + force sdkconfig regen to fix 16MB crash loop
Some checks are pending
CI Benchmark - Fusion Loop Timing / Fusion Loop Timing Benchmark (push) Waiting to run

The 0.1.352 Docker image contained firmware compiled with CONFIG_ESPTOOLPY_FLASHSIZE=16MB
despite sdkconfig.defaults being updated to 4MB in d837598. Kaniko served a cached
firmware layer, bypassing the sdkconfig.defaults change.

Result: ESP32-S3 (4MB flash) flashed via Web Serial crashed on every boot:
  spi_flash: Detected size(4096k) smaller than binary image header(16384k). Probe failed.

Fix:
- Add FIRMWARE_CACHE_BUST ARG before COPY in firmware stage (guarantees cache miss)
- Add RUN rm -f sdkconfig sdkconfig.old so idf.py set-target regenerates from
  sdkconfig.defaults (CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y) on every build

Bumps version to 0.1.354 to trigger a fresh CI build.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jedarden 2026-06-03 23:14:10 -04:00
parent 9ac200b719
commit 301a5884ce
2 changed files with 10 additions and 1 deletions

View file

@ -25,9 +25,18 @@ RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
exit 0; \
fi
# Bust Kaniko layer cache when flash size config changes (sdkconfig.defaults).
# Without this ARG, Kaniko can serve a cached firmware layer that was built with
# the old 16MB config even after sdkconfig.defaults is updated to 4MB.
ARG FIRMWARE_CACHE_BUST=2026-06-03
WORKDIR /project
COPY firmware/ ./
# Remove any stale generated sdkconfig so set-target regenerates it from
# sdkconfig.defaults (which specifies CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y).
RUN rm -f sdkconfig sdkconfig.old
# Source export.sh to activate IDF toolchain (entrypoint is not called in build stages).
# set-target must be run explicitly before build even when CONFIG_IDF_TARGET is in sdkconfig.defaults.
# idf.py build produces build/spaxel-firmware.bin

View file

@ -1 +1 @@
0.1.353
0.1.354