The workflow references the SDK image by the moving `:latest` tag, and act_runner skips the pull when a local copy of that tag already exists: the job log reports `docker pull ... forcePull=false` followed by `Image exists? true`. Pushing a rebuilt image therefore changes nothing until someone pulls on the VM by hand, and the run fails as though the image never gained the tool that was added to the Containerfile — `sccache` resolving as "No such file or directory" while the pinned toolchain from an earlier build of the same tag resolves fine. Set `force_pull: true` so a pushed image is what actually runs, and document the manual refresh for runners configured before this change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GdyUjuXejCEfiub675z6cz Signed-off-by: Stan Grams <sjg@haxx.space>
42 lines
1.6 KiB
YAML
42 lines
1.6 KiB
YAML
# SPDX-FileCopyrightText: 2026 Stan Grams <sjg@haxx.space>
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
# Example act_runner config for the Docker-executor runner that lives in the
|
|
# CI VM. This is NOT the SDK image — it configures the runner that launches
|
|
# per-job containers (including the trx-rs SDK image referenced by the
|
|
# workflow's `container:` key). Copy to the VM and pass with
|
|
# `act_runner daemon --config`.
|
|
|
|
log:
|
|
level: info
|
|
|
|
runner:
|
|
file: .runner
|
|
# One concurrent job. With one runner per project on a 2-vCPU VM this keeps
|
|
# total CI usage at ~2 threads.
|
|
capacity: 1
|
|
timeout: 3h
|
|
# Docker executor: no ":host" suffix. Maps runs-on labels to base images
|
|
# (the workflow overrides these per job via `container:`).
|
|
labels:
|
|
- "ubuntu-latest:docker://catthehacker/ubuntu:act-latest"
|
|
|
|
cache:
|
|
enabled: true
|
|
|
|
container:
|
|
# Cap every job container's CPU so CI stays within the 2-thread budget even
|
|
# if capacity is raised later. The -v mount persists the sccache cache on the
|
|
# host (create it first: `mkdir -p /var/cache/sccache`), matching SCCACHE_DIR
|
|
# in the workflow.
|
|
options: "--cpus=2 -v /var/cache/sccache:/sccache"
|
|
# Reuse the host VM's Docker network for the built-in cache/artifact server.
|
|
network: "host"
|
|
# The workflow pulls the SDK image by the moving `:latest` tag. Without this
|
|
# the runner logs "Image exists? true" and reuses whatever it cached the
|
|
# first time, so pushing a rebuilt image has no effect until someone pulls
|
|
# on the VM by hand — which looks like the image is missing a tool it in
|
|
# fact has. The extra registry round-trip per job is nothing next to a build.
|
|
force_pull: true
|