[chore](trx-rs): adapt CI to host-executor Podman runners #4

Merged
sjg merged 3 commits from ci/reuse-host-executor into main 2026-07-19 00:08:46 +02:00
Owner

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.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV

## 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
sjg added 1 commit 2026-07-18 13:24:35 +02:00
[chore](trx-rs): run reuse lint directly instead of Docker action
CI / test (pull_request) Failing after 52s
CI / reuse (pull_request) Failing after 3s
CI / lint (pull_request) Successful in 3m34s
6fe549e34e
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>
sjg added 1 commit 2026-07-18 23:33:45 +02:00
[chore](trx-rs): drop redundant CI setup steps for baked runner image
CI / lint (pull_request) Successful in 9m14s
CI / reuse (pull_request) Failing after 6s
CI / test (pull_request) Successful in 15m15s
2ef9f80fc1
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 runners 2026-07-18 23:36:00 +02:00
sjg added 1 commit 2026-07-18 23:57:43 +02:00
[chore](trx-rs): install reuse with charset-normalizer extra
CI / lint (pull_request) Successful in 9m35s
CI / reuse (pull_request) Failing after 5s
CI / lint (push) Successful in 8m40s
CI / test (pull_request) Successful in 29m0s
CI / reuse (push) Failing after 5s
CI / test (push) Successful in 14m28s
ff4e2a5c5d
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 main 2026-07-19 00:08:46 +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#4