Embedded firmware
Embedded firmware CI on GitHub Actions
Cross-compilation toolchains download and rebuild on every run.
3m → 8s
Toolchain setup
9m → 2m
Build
Cross-compilation toolchains download and rebuild on every run.
Why it happens
Toolchain archives and the build directory are not cached, so every firmware build is cold.
What to change
- Cache the toolchain installation directory keyed on the toolchain version
- Use ccache with the cross compiler as the launcher
- Build variants as a matrix rather than sequentially in one job
Embedded firmware on runnerhut
yaml
jobs: build: runs-on: runnerhut-8vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - uses: hendrikmuhs/ccache-action@v1 - run: west build -b nucleo_f429ziThe only runnerhut-specific line is `runs-on: runnerhut-8vcpu-ubuntu-2404`. Everything else is standard GitHub Actions — the same actions, the same secrets and the same permissions model you use today.
Your next build could be twice as fast, at half the price
Start free. Migrating away is the same one line, and we publish that diff too.