Commit Graph

1 Commits

Author SHA1 Message Date
Julien Gautier 308f505f38 feat(infra): add ci-runners.sh wrapper for the runner stack
CI / commits (pull_request) Successful in 1m36s
CI / scan (pull_request) Successful in 1m38s
CI / check (pull_request) Successful in 1m43s
CI / a11y (pull_request) Successful in 1m36s
CI / perf (pull_request) Successful in 3m18s
Mirrors the convenience-script pattern we adopted for
infra/local/dev.sh: typing
`docker compose -f infra/ci-runners.compose.yml ...` for routine
ops (status, restart, log tail) gets old fast, the pre-pull of
the catthehacker job images is documented but easy to forget,
and the "rotation of one runner at a time" tip in
infra/README.md is a sequence the contributor was supposed to
hand-roll every time.

`infra/ci-runners.sh` exposes:

  ./ci-runners.sh up                  # bring up runner-1..3
  ./ci-runners.sh up --prepull        # pre-pull job images first
  ./ci-runners.sh down                # stop + remove (preserves
                                       data/runner-N/.runner creds)
  ./ci-runners.sh restart <runner>    # restart one runner
  ./ci-runners.sh rotate              # rolling restart with a 15 s
                                       pause between each — keeps
                                       at least N-1 runners online
                                       through a config refresh
  ./ci-runners.sh status              # docker compose ps
  ./ci-runners.sh logs [runner]       # follow logs
  ./ci-runners.sh pull-images         # idempotent image refresh

Anything else is passed through to
`docker compose -f ci-runners.compose.yml ...`. The destructive
`down -v` (wipes data/, forces re-registration with a fresh
Gitea token) is intentionally NOT exposed as a verb — invoke
docker compose directly so the path is explicit at the typing
level.

`infra/README.md` updated:

- Inventory table at the top picks up the script.
- "First-time registration" walkthrough swaps the explicit
  docker pull / docker compose up steps for `./ci-runners.sh
  up --prepull`.
- New "Convenience script — ci-runners.sh" subsection with the
  cheat-sheet table.
- "Operational tips" rephrased to point at the script's `rotate`
  / `restart` / `logs` verbs as the canonical commands; the
  raw-docker-compose form is kept in parentheses as the
  underlying mechanism.
- "Adding a fourth runner" tip now reminds to update the
  RUNNERS=() array at the top of the script.

The 15 s pause in `rotate` is a conservative approximation —
act_runner doesn't expose a Compose healthcheck, so we can't
poll for ready. Adjust the constant if reality argues for a
different value.

Smoke-tested help + arg-validation paths on the host.
2026-05-10 06:33:50 +02:00