Forgejo Actions runner — make rig workflows execute #115
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:bootstrap
scope:coolify
scope:db
scope:docs
scope:drill
scope:installer
scope:labels
scope:platform
scope:runner
scope:users
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/rig#115
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Forgejo Actions is enabled and
heavy-duty/rigdiscovers its workflows, but the repository has never executed one:GET /api/v1/repos/heavy-duty/rig/actions/tasksreturnedtotal_count: 0on 2026-07-29. Every check remainsWaiting to run, including checks onmain.This prevents CI evidence, the labels reconciler/work-queue sweep, and the release workflow from operating on Forgejo. Issue #111 / PR !114 exposed the gap: reviewers had to reproduce the exact local gates and the PR state could not be machine-reconciled.
Created under @andres's explicit exception in !114 comment 3664 to file the missing Ceremony-support work directly.
Spec
Register one repository-scoped Forgejo Actions runner for
heavy-duty/rigusing the shippedrig forgejo-runnerlifecycle. The runner must use the repository's documented labels and run workflows from this Forgejo without inbound ports or persisted registration tokens.Do not change workflow semantics in this issue. If a workflow fails after it actually starts, record that as separate implementation work unless the failure is runner configuration.
Tasks
heavy-duty/rig.ci-boxand install the runner withrig forgejo-runner install --instance https://forgejo.heavyduty.builders.mainworkflows.Acceptance criteria
GET /api/v1/repos/heavy-duty/rig/actions/tasksreports at least one completed workflow run..runnercredential is exposed in logs/comments.ci / check,ci / install, andci / db-integrationare acquired and reach terminal results on currentmain.Test plan
sudo rig forgejo-runner statussudo systemctl status forgejo-runnerDependencies
Blocks #116 and reliable Ceremony automation for #111 / !114.
Verified: the runner executes rig's workflows — measured against this issue's own acceptance criteria
@andres attached a repository-scoped runner (
ci-forgejo-box,v12.13.2) viarig forgejo-runner installon 2026-08-01. Measured, not eyeballed:GET /api/v1/repos/heavy-duty/rig/actions/tasksreports at least one completed runtotal_count: 0when this issue was filed, and returned0for every repo on the instancecijobs runci.ymltasks: 18 success, 9 failureThe decisive evidence
Not one job anywhere reports
No matching online runner with label: …— the exact string this repo's Actions page showed for weeks. Every failure occurs after the container starts:That distinction is the whole answer. A runner fault looks like a job queued forever, or Forgejo reporting no runner matches the label. A tooling fault looks like this: job acquired, image pulled, steps executed, one binary missing. Only the second kind is present.
The two
cijobs that pass — the ones needing no extra tooling — are the cleanest proof the pipeline itself is sound end to end.What is failing, and why it is not this issue
This issue's spec says it outright:
Neither failure is runner configuration:
ci / check—shellcheck: command not found. rig's default label mapsubuntu-latesttoghcr.io/catthehacker/ubuntu:act-22.04, a slim image; GitHub's realubuntu-latestshipsshellcheck. rig's own default cannot run rig's own CI. Filed separately.labels / reconcile—gh: command not found, 46 occurrences. Installingghwould not fix it:ceremony@0.3.0makes 21gh api, 13gh issue, 4gh labeland 3gh prcalls, no file in ceremony at any ref mentions Forgejo, and Forgejo answers404on/api/v3/(GitHub's shape) while serving/api/v1/. The reconciler is not missing a binary; it is pointed at a forge whose API it cannot speak. Filed separately.Remaining criteria, honestly
.runnercredential exposed" — satisfied; the token went in by env, and nothing here prints it.v12.13.2, labelsubuntu-latest+docker, service active, runs linked above.ci / db-integrationreached a terminal result;ci / checkreaches one too, and that verdict is currently failure for the tooling reason above rather than a runner one.Not closing — @andres owns that call, and he may want the
ci / checkfollow-up landed first so the board shows a green CI rather than a red one.One thing worth recording for whoever reads this later
Getting here needed three rig fixes found the hard way, all from this one install: #139 (a
PATHwithout/usr/sbin, which killed the install after taking the token), #141 (install reported "installed and running" for a unit crash-looping 76 times), and #142 (no Docker preflight, which was the actual cause). The runner attaching is the headline; those three are why it took four attempts.Closed by triage — the runner is attached and executing; the deliverable is live
The acceptance criteria were measured and posted on this issue on 2026-08-01 ("Verified: the runner executes rig's workflows"). Re-measured today, 2026-08-17:
GET /repos/heavy-duty/rig/actions/tasksreports 1699 tasks, with scheduled runs executing as recently as 23:05 today. Workflows are acquired, run, and reach terminal results — onmain, on PRs (!140/!146 carried terminal checks through review), and on cron.One boundary this issue drew itself, worth restating at close: "If a workflow fails after it actually starts, record that as separate implementation work unless the failure is runner configuration." The one persistently red workflow,
labels.yml, fails for exactly such a non-runner reason — the ceremony0.3.0reconcilers speak GitHub's API, not this forge's. That was #145 (ruling recorded and closed) and is now #149 (ready): bump the ceremony pin to0.6.1, whose reconcilers speak Forgejo. Nothing about it is runner configuration; nothing here stays open for it.This unblocks what the Dependencies section promised: CI evidence on PRs, and — once #149 lands — the labels reconciler and work-queue sweep this board has been hand-managing.