Add container/: a rootless Podman + systemd (Quadlet) setup to run per-project Gitea Actions runners on one host instead of VMs. Uses the host executor with a purpose-built image that bakes in the Rust toolchain and all build dependencies (opus, alsa, soapysdr, clang), so CI runs skip the per-run install and cold soapysdr-sys build. Includes the runner Containerfile, first-boot registration entrypoint, act_runner config template, two Quadlet units (trx-rs + a second project), and a README covering build, registration, the required host-executor workflow tweak, and tuning. Assisted-By: Claude Code (claude-opus-4) Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV Signed-off-by: Stan Grams <sjg@haxx.space>
33 lines
1.1 KiB
YAML
33 lines
1.1 KiB
YAML
# SPDX-FileCopyrightText: 2026 Stan Grams <sjg@haxx.space>
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
# act_runner configuration template. Seeded into /data/config.yaml on first
|
|
# boot; edit the copy inside the volume to change settings per runner.
|
|
|
|
log:
|
|
level: info
|
|
|
|
runner:
|
|
# Registration state. Relative to the daemon's working directory (/data).
|
|
file: .runner
|
|
# Concurrent jobs this runner will pick up. Rust builds are heavy — keep this
|
|
# modest, especially if two runners share one host. The trx-rs workflow has
|
|
# three parallel jobs (lint, test, reuse); capacity 2 lets two overlap.
|
|
capacity: 2
|
|
timeout: 3h
|
|
# Map the workflow's `runs-on: ubuntu-latest` to the HOST executor, i.e. run
|
|
# steps directly inside THIS container (which already has all the toolchain).
|
|
# No Docker/Podman socket is required in this mode.
|
|
labels:
|
|
- "ubuntu-latest:host"
|
|
|
|
cache:
|
|
# Built-in actions cache server (used by actions/cache). Stored in the volume.
|
|
enabled: true
|
|
dir: "/data/cache"
|
|
|
|
host:
|
|
# Where per-job workspaces are created.
|
|
workdir_parent: /data/workflows
|