INB-33: provision second self-hosted Gitea Actions runner (gitea-runner-2) #3

Merged
Ghost merged 1 commits from inb-33-runner-2-clean into main 2026-06-08 07:26:01 +00:00

Summary

Adds a second self-hosted Gitea Actions runner (gitea-runner-2) with the same label set as gitea-runner so the live-pipeline cron and historical-pipeline workflow_dispatch can run in parallel on the same host. Removes the single-runner contention that was leaving historical runs queued indefinitely while the every-5-min live pipeline was in flight.

Cherry-picked cleanly off PR #2 (which had been polluted by INB-27.a and INB-35 commits in the same branch). Only the 4 files from the original INB-33 commit are touched here.

Files (4 files, +86/-6)

  • docker/docker-compose.yml — new gitea-runner-2 service + gitea-runner-2-data named volume; mirrors gitea-runner (same image, label set self-hosted,linux,x64,gitea-runner:docker, same network, docker socket mount). Different container_name, separate registration-token env, separate data volume.
  • .env.example — new GITEA_RUNNER_REGISTRATION_TOKEN_2 placeholder with the rationale that each runner needs its own one-time token.
  • docs/gitea-actions.md — new §2a registration walkthrough, updated topology diagram, updated rollback table.
  • pipelines/README.md — operational note that two runners are registered and links back to INB-33 / the docs.

Why the rebase

PR #2 had a non-trivial merge conflict on pipelines/common.py because the same branch had also accumulated the INB-27.a (Papra dry-run) and INB-35 (operations runbook) commits. The clean rebase isolates just the INB-33 change for merge review and unblocks the operator-side deploy without dragging in unrelated diff.

Deploy steps (post-merge, on host)

  1. Gitea Site Admin -> Actions -> Runners -> Create new runner; copy token.
  2. Append GITEA_RUNNER_REGISTRATION_TOKEN_2=<token> to .env on the host.
  3. docker compose -f docker/docker-compose.yml up -d gitea-runner-2
  4. Verify two online runners via the runners API.
  5. Dispatch historical-pipeline.yml while live cron is in flight; expect ~30s start.

Approval

Board approval 393864d4 covers the original PR #2; this rebase is a clean presentation of the same approved change.

Resolves INB-33. Unblocks INB-7 and INB-32.

## Summary Adds a second self-hosted Gitea Actions runner (`gitea-runner-2`) with the same label set as `gitea-runner` so the live-pipeline cron and historical-pipeline `workflow_dispatch` can run in parallel on the same host. Removes the single-runner contention that was leaving historical runs queued indefinitely while the every-5-min live pipeline was in flight. Cherry-picked cleanly off [PR #2](https://git.cloudinit.dev/cto-inboxos/inboxos/pulls/2) (which had been polluted by INB-27.a and INB-35 commits in the same branch). Only the 4 files from the original INB-33 commit are touched here. ## Files (4 files, +86/-6) - `docker/docker-compose.yml` — new `gitea-runner-2` service + `gitea-runner-2-data` named volume; mirrors `gitea-runner` (same image, label set `self-hosted,linux,x64,gitea-runner:docker`, same network, docker socket mount). Different `container_name`, separate registration-token env, separate data volume. - `.env.example` — new `GITEA_RUNNER_REGISTRATION_TOKEN_2` placeholder with the rationale that each runner needs its own one-time token. - `docs/gitea-actions.md` — new §2a registration walkthrough, updated topology diagram, updated rollback table. - `pipelines/README.md` — operational note that two runners are registered and links back to INB-33 / the docs. ## Why the rebase PR #2 had a non-trivial merge conflict on `pipelines/common.py` because the same branch had also accumulated the INB-27.a (Papra dry-run) and INB-35 (operations runbook) commits. The clean rebase isolates just the INB-33 change for merge review and unblocks the operator-side deploy without dragging in unrelated diff. ## Deploy steps (post-merge, on host) 1. Gitea Site Admin -> Actions -> Runners -> Create new runner; copy token. 2. Append `GITEA_RUNNER_REGISTRATION_TOKEN_2=<token>` to `.env` on the host. 3. `docker compose -f docker/docker-compose.yml up -d gitea-runner-2` 4. Verify two online runners via the runners API. 5. Dispatch `historical-pipeline.yml` while live cron is in flight; expect ~30s start. ## Approval Board approval [393864d4](/INB/approvals/393864d4-64ab-4f23-9da3-0621a811e003) covers the original PR #2; this rebase is a clean presentation of the same approved change. Resolves INB-33. Unblocks INB-7 and INB-32.
Ghost added 1 commit 2026-06-08 07:25:42 +00:00
inb-33: add gitea-runner-2 for live+historical parallelism
InboxOS — PR CI / Fast offline tests (pull_request) Successful in 1m26s
InboxOS — PR CI / 100MB historical e2e (pull_request) Successful in 8m46s
InboxOS — PR CI / Live Ollama extract smoke (pull_request) Successful in 1m0s
3430985315
Adds a second self-hosted Gitea Actions runner (inboxos-runner-2)
to docker/docker-compose.yml with the same label set
(self-hosted,linux,x64,gitea-runner:docker) so the live-pipeline
cron and historical-pipeline workflow_dispatch can execute in
parallel on the same host. Removes the single-runner contention
that was leaving historical runs queued indefinitely while the
5-minute live pipeline was in progress.

- docker/docker-compose.yml: new gitea-runner-2 service + named
  volume gitea-runner-2-data; mirrors gitea-runner config.
- .env.example: new GITEA_RUNNER_REGISTRATION_TOKEN_2 placeholder.
- docs/gitea-actions.md: §2a registration steps, updated topology
  diagram, updated rollback table.
- pipelines/README.md: operational note that two runners are
  registered.

No workflow files changed: workflows continue to target
ubuntu-latest/self-hosted; Gitea load-balances between the two
runners.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Ghost merged commit b6878f6fdc into main 2026-06-08 07:26:01 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: coreci/inboxos-v1#3