Adapt the CI workflow to the self-hosted host-executor Podman runners
(container/). Two changes, both driven by how that executor works — jobs run
directly inside one runner container that already has the toolchain and build
deps baked in:
reuse job — replace fsfe/reuse-action@v5 (a Docker action, which the
host executor can't run — "Cannot connect to the Docker daemon") with a
direct run: reuse lint. reuse is baked into the runner image.
Drop redundant setup steps — remove the per-job apt-get install,
rustup and cache steps. They duplicated what the image already provides, and
with two jobs running concurrently in the same runner they collided on the
dpkg lock ("Could not get lock /var/lib/dpkg/lock-frontend"). Jobs now go
straight to cargo; the registry persists in the long-lived container.
Net result: the pipeline runs natively on the Podman runners with no Docker
dependency and no per-run install cost.
Note
This ties the workflow to the baked runner image (container/Containerfile).
That is intentional for this self-hosted setup; if you ever run on a vanilla
runner, the toolchain/deps would need reinstating.
## Summary
Adapt the CI workflow to the self-hosted **host-executor** Podman runners
(`container/`). Two changes, both driven by how that executor works — jobs run
directly inside one runner container that already has the toolchain and build
deps baked in:
1. **`reuse` job** — replace `fsfe/reuse-action@v5` (a Docker action, which the
host executor can't run — "Cannot connect to the Docker daemon") with a
direct `run: reuse lint`. `reuse` is baked into the runner image.
2. **Drop redundant setup steps** — remove the per-job `apt-get install`,
rustup and cache steps. They duplicated what the image already provides, and
with two jobs running concurrently in the same runner they collided on the
dpkg lock ("Could not get lock /var/lib/dpkg/lock-frontend"). Jobs now go
straight to `cargo`; the registry persists in the long-lived container.
Net result: the pipeline runs natively on the Podman runners with no Docker
dependency and no per-run install cost.
## Note
This ties the workflow to the baked runner image (`container/Containerfile`).
That is intentional for this self-hosted setup; if you ever run on a vanilla
runner, the toolchain/deps would need reinstating.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
The host-executor runners have no Docker daemon, so fsfe/reuse-action
(a Docker action) fails with "Cannot connect to the Docker daemon". Call
the reuse CLI directly; it is baked into the runner image.
Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
The host-executor runners run jobs inside one container that already has
the Rust toolchain and all build dependencies baked in, so the per-job
`apt-get install` and rustup steps were redundant. Worse, with two jobs
running concurrently in the same runner they collided on the dpkg lock
("Could not get lock /var/lib/dpkg/lock-frontend").
Remove the system-dependency, rustup and cache steps; jobs now run cargo
directly. The cargo registry persists in the long-lived runner container.
Assisted-By: Claude Code (claude-opus-4)
Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
Signed-off-by: Stan Grams <sjg@haxx.space>
sjg
changed title from [chore](trx-rs): run reuse lint directly instead of Docker action to [chore](trx-rs): adapt CI to host-executor Podman runners2026-07-18 23:36:00 +02:00
The runner image's `reuse` failed to import (NoEncodingModuleError): it
needs an encoding-detection backend, which the bare `reuse` install does
not provide and which libmagic/`file` is not present to satisfy. Install
`reuse[charset-normalizer]` so the reuse job can run in the image.
Rebuild the runner image and recreate the containers to pick this up.
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 ff4e2a5c5d into main2026-07-19 00:08:46 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Adapt the CI workflow to the self-hosted host-executor Podman runners
(
container/). Two changes, both driven by how that executor works — jobs rundirectly inside one runner container that already has the toolchain and build
deps baked in:
reusejob — replacefsfe/reuse-action@v5(a Docker action, which thehost executor can't run — "Cannot connect to the Docker daemon") with a
direct
run: reuse lint.reuseis baked into the runner image.Drop redundant setup steps — remove the per-job
apt-get install,rustup and cache steps. They duplicated what the image already provides, and
with two jobs running concurrently in the same runner they collided on the
dpkg lock ("Could not get lock /var/lib/dpkg/lock-frontend"). Jobs now go
straight to
cargo; the registry persists in the long-lived container.Net result: the pipeline runs natively on the Podman runners with no Docker
dependency and no per-run install cost.
Note
This ties the workflow to the baked runner image (
container/Containerfile).That is intentional for this self-hosted setup; if you ever run on a vanilla
runner, the toolchain/deps would need reinstating.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV
The host-executor runners run jobs inside one container that already has the Rust toolchain and all build dependencies baked in, so the per-job `apt-get install` and rustup steps were redundant. Worse, with two jobs running concurrently in the same runner they collided on the dpkg lock ("Could not get lock /var/lib/dpkg/lock-frontend"). Remove the system-dependency, rustup and cache steps; jobs now run cargo directly. The cargo registry persists in the long-lived runner container. Assisted-By: Claude Code (claude-opus-4) Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV Signed-off-by: Stan Grams <sjg@haxx.space>[chore](trx-rs): run reuse lint directly instead of Docker actionto [chore](trx-rs): adapt CI to host-executor Podman runners