Skip to content

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

  1. Cache the toolchain installation directory keyed on the toolchain version
  2. Use ccache with the cross compiler as the launcher
  3. 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_f429zi
A working starting point

The 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.