[chore](trx-rs): add Podman act_runner CI deployment #3

Merged
sjg merged 1 commits from deploy/podman-act-runner into main 2026-07-18 13:15:07 +02:00
Owner

Summary

Adds container/: a rootless Podman + systemd (Quadlet) setup for running
per-project Gitea Actions runners on a single host, as an alternative to one
VM per project.

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 the cold soapysdr-sys build that dominated the
initial pipeline.

Contents

  • Containerfile — Debian image: build deps + clang + Rust (fmt/clippy) + Node
    • reuse + sudo + the act_runner binary.
  • entrypoint.sh — registers on first boot (if no .runner exists), seeds the
    config into the data volume, then runs the daemon.
  • config.yaml — act_runner config template; label ubuntu-latest:host.
  • trx-rs-runner.container / project2-runner.container — Quadlet units, one
    per project. Separate names/volumes/tokens; shared label; registration scope
    keeps their jobs apart. Resource caps included.
  • README.md — build, registration, tuning, and the one required workflow
    change.

Note

The host executor cannot run Docker-based actions, so the reuse job (which
uses fsfe/reuse-action@v5) must be switched to run: reuse lint when using
these runners — reuse is baked into the image. Details and the snippet are in
the README. The lint and test jobs are unchanged (their install/rustup
steps become fast no-ops on the baked image).

All files carry inline SPDX headers, so the REUSE check stays green.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV

## Summary Adds `container/`: a rootless Podman + systemd (Quadlet) setup for running per-project Gitea Actions runners on a single host, as an alternative to one VM per project. 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 the cold `soapysdr-sys` build that dominated the initial pipeline. ## Contents - `Containerfile` — Debian image: build deps + clang + Rust (fmt/clippy) + Node + `reuse` + `sudo` + the `act_runner` binary. - `entrypoint.sh` — registers on first boot (if no `.runner` exists), seeds the config into the data volume, then runs the daemon. - `config.yaml` — act_runner config template; label `ubuntu-latest:host`. - `trx-rs-runner.container` / `project2-runner.container` — Quadlet units, one per project. Separate names/volumes/tokens; shared label; registration scope keeps their jobs apart. Resource caps included. - `README.md` — build, registration, tuning, and the one required workflow change. ## Note The host executor cannot run Docker-based actions, so the `reuse` job (which uses `fsfe/reuse-action@v5`) must be switched to `run: reuse lint` when using these runners — `reuse` is baked into the image. Details and the snippet are in the README. The `lint` and `test` jobs are unchanged (their install/rustup steps become fast no-ops on the baked image). All files carry inline SPDX headers, so the REUSE check stays green. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
sjg added 1 commit 2026-07-18 13:00:59 +02:00
[chore](trx-rs): add Podman act_runner CI deployment
CI / lint (pull_request) Successful in 2m43s
CI / test (pull_request) Successful in 3m20s
CI / reuse (pull_request) Successful in 7s
CI / lint (push) Successful in 2m36s
CI / test (push) Successful in 2m35s
CI / reuse (push) Failing after 4s
406a8f86b1
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>
sjg merged commit 406a8f86b1 into main 2026-07-18 13:15:07 +02:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sjg/trx-rs#3