Skip to content

Yocto

Yocto CI on GitHub Actions

A Yocto build takes hours because sstate is empty.

4h → 70m
Cold build
4h → 12m
Warm build

A Yocto build takes hours because sstate is empty.

Why it happens

The shared state cache and downloads directory are not persisted between runs.

What to change

  1. Cache sstate-cache and downloads — this is the entire game with Yocto
  2. Use a 32 vCPU runner with a large NVMe scratch disk
  3. Point BB_NUMBER_THREADS and PARALLEL_MAKE at the core count

Yocto on runnerhut

yaml
jobs:
build:
runs-on: runnerhut-32vcpu-ubuntu-2404
steps:
- uses: actions/checkout@v4
- run: |
source oe-init-build-env
bitbake core-image-minimal
A working starting point

The only runnerhut-specific line is `runs-on: runnerhut-32vcpu-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.