fix(ci): pin act_runner job image to catthehacker/ubuntu:act-22.04 #4
Reference in New Issue
Block a user
Delete Branch "fix/ci-runner-image"
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?
Summary
act_runner's job container image tocatthehacker/ubuntu:act-22.04via the<label>:docker://<image>format on the runner registration labels.infra/ci-runners.compose.yml'sGITEA_RUNNER_LABELSfor all three runner services, with an inline comment explaining the format requirement.Motivation
The first real PR test of the CI pipeline failed at the very first step:
Root cause:
act_runnerregisters labels (self-hosted,on-prem) without adocker://image suffix. Without that suffix, act spawns jobs in a minimal default container that has no Node. Every JavaScript action (actions/checkout,actions/setup-node,nrwl/nx-set-shas, the Trivy/gitleaks actions) crashes during the action's launch step. None of the five CI gates can run.catthehacker/ubuntu:act-22.04is the de facto image used byactupstream and the standard recommendation for self-hosted Gitea Actions runners. It bundles Node, Python, git, common build tools, and the Docker CLI — exactly the assumed environment for GitHub Actions-compatible workflows.Implementation notes
GITEA_RUNNER_LABELSbecause that's whatact_runnerreads at registration time. The label-to-image mapping is then persisted in the runner'sdata/runner-N/.runnercredential.apf-portal-runner-N), the persisted credential ignores the new env var. Their labels must be updated through Gitea's UI (Site Administration → Actions → Runners → each runner → editLabels). This is documented in the commit message and is an operational follow-up to merging this PR.data/runner-N/is wiped or a new fourth runner is added).accepted. The runner-image choice is an implementation detail under the existing decision; no new ADR.Verification
pnpm ci:check— n/a, this PR only changes infra and ADR docs, no code paths.actions/checkout@v4step runs withoutCannot find: node in PATH.Related
infra/README.md— operational doc for the runners; mentions the registration workflow but predates this format requirement. A subsequent docs touch could mirror the new label format there too; deferred to keep this PR scoped to the actual fix.