CI/CD and Firmware Delivery¶
Workflows¶
Build (`.github/workflows/build.yml`): runs on every push/PR (master/main/develop) and on manual dispatch. Steps: install PlatformIO, create
src/config/config.hppfrom the default viatools/prepare_config.sh, embed web assets, buildgeiger, report size, upload artifacts.Release (`.github/workflows/release.yml`): triggered by tags (or manual). Performs the same build and then packages binaries to
binaries/geiger/and publishes them as release assets.
Getting firmware from Actions artifacts¶
In GitHub, open Actions → select a Build run → Artifacts → download
firmware-geiger-<sha>.zip.The archive contains:
firmware.bin— flashable binaryfirmware.elf— symbols for debugging
Flash the binary, for example with esptool (adjust port/baud):
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 \ write_flash 0x10000 firmware.bin
Or via PlatformIO:
pio run -e geiger -t upload --upload-port /dev/ttyUSB0 --upload-speed 460800
Getting firmware from Releases¶
Open the Releases page and pick the desired tag.
Download the assets from
binaries/geiger/(samefirmware.bin/.elfas in the artifacts).Flash using the same esptool or PlatformIO commands as above.
Notes¶
tools/prepare_config.shauto-generatessrc/config/config.hppfrom the default; adjust configuration locally if you build yourself.scripts/web_to_header.pyruns on each build (viamake web) so firmware always contains the current Vite-built web UI.