diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 294fcbf..5f67843 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -2,16 +2,13 @@ name: Build RPi image # Yocto (kas) build of rpilinux-image for raspberrypi4-64. # -# Runner requirements (see chat/notes): -# - matches the instance runner's "ubuntu-latest" label (bare label = job -# runs on the runner's machine, i.e. a host job). Yocto needs ~250GB -# persistent disk, so the runner must actually be a machine (or a -# container with a big persistent volume), not a throwaway sandbox. -# - ~250GB free in $HOME, plus the poky host dependencies + node -# - runner.timeout >= 8h for the first build (runner default is 3h) +# Runs on the dedicated host runner (label "yocto:host", Ryzen 9 box). +# Everything persists in $YOCTO_HOME: extern/ (layer clones) + build/ (sstate) +# survive between runs -> incremental builds after the first. +# $YOCTO_HOME defaults to $HOME/yocto-ci; override it via runner.envs +# (runner.envs.YOCTO_HOME=/data/yocto-ci) to put it on the big disk. # -# Upgrade path: register a dedicated runner with label "yocto:host" and -# change runs-on below to "yocto". +# First build takes hours (poky fetch + full image) -> runner.timeout >= 8h. on: push: @@ -28,7 +25,7 @@ permissions: jobs: build: - runs-on: ubuntu-latest + runs-on: yocto timeout-minutes: 600 steps: - uses: builtin:checkout @@ -52,7 +49,7 @@ jobs: echo "::error::Missing host tools:$missing" echo "Install on the runner host, e.g.:" echo ' sudo apt-get install -y --no-install-recommends build-essential \ - bison chrpath curl diffstat file gawk git libpython3-dev libssl-dev \ + bison flex chrpath curl diffstat file gawk git libpython3-dev libssl-dev \ make python3 python3-venv python3-pip python3-dev rsync swig unzip \ wget xz-utils zstd bzip2 nodejs npm' exit 1 @@ -61,7 +58,7 @@ jobs: - name: Set up kas (persistent venv) run: | set -e - export YOCTO_HOME="$HOME/yocto-ci" + export YOCTO_HOME="${YOCTO_HOME:-$HOME/yocto-ci}" mkdir -p "$YOCTO_HOME" [ -d "$YOCTO_HOME/venv" ] || python3 -m venv "$YOCTO_HOME/venv" "$YOCTO_HOME/venv/bin/pip" -q install -U kas @@ -70,7 +67,7 @@ jobs: - name: Sync to persistent project dir and build run: | set -euo pipefail - export YOCTO_HOME="$HOME/yocto-ci" + export YOCTO_HOME="${YOCTO_HOME:-$HOME/yocto-ci}" # Persistent project dir: keeps extern/ (layer clones) and build/ # (sstate + tmp) between runs -> incremental builds after the first. rsync -a --delete \ @@ -83,7 +80,7 @@ jobs: - name: Collect images run: | set -euo pipefail - export YOCTO_HOME="$HOME/yocto-ci" + export YOCTO_HOME="${YOCTO_HOME:-$HOME/yocto-ci}" cd "$YOCTO_HOME/yocto_rpi" IMG_DIR="build/*/tmp/deploy/images/raspberrypi4-64" ls -lh $IMG_DIR