ci: keep curl+tar checkout in the build job (no node in stage3 container)
CI / lint (push) Successful in 20s
CI / build (push) Successful in 6m2s

actions/checkout can't run in the build job: the Gitea runner executes JS
actions via `docker exec node …` inside the job container, and gentoo/stage3
ships no node, so checkout died with `exec: "node": ... not found` (exit 127)
in run 111. Revert the build job to the node-free curl+tar checkout (restore
net-misc/curl, /var/db/repos/azy5030 paths) and document why.

The lint job keeps actions/checkout — it has no container: and runs in the
runner's default node-capable image, where plain checkout works on this SHA-1
repo (confirmed green in run 111's lint job).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018MsAYv5RhNLE54fPrviVgS
This commit is contained in:
Ali
2026-06-19 20:46:02 -05:00
parent 98ed1c32ce
commit 34d769625a
2 changed files with 26 additions and 15 deletions
+8 -4
View File
@@ -65,10 +65,14 @@ Runs on every push, two jobs. A **`lint`** job runs on the plain Docker-backend
`just lint` (markdownlint/shellcheck/yamllint/actionlint). The **`build`** job has
`needs: lint` (lint is a gate) and runs inside a `gentoo/stage3:amd64-openrc` container:
`emerge-webrsync` to sync `::gentoo` → configure portage (disables binpkg signature
verification so prebuilt deps like `dev-lang/go` are pulled, not compiled; also pulls
`dev-vcs/git`, which `actions/checkout` needs and stage3 lacks) → `actions/checkout`
into `$GITHUB_WORKSPACE`, registered as the overlay via `repos.conf` →
`pkgcheck scan` → `emerge` → assert `gitea-runner --version` matches the ebuild version.
verification so prebuilt deps like `dev-lang/go` are pulled, not compiled) → **check out
via `curl + tar`, not `actions/checkout`** into `/var/db/repos/azy5030` → `pkgcheck scan`
→ `emerge` → assert `gitea-runner --version` matches the ebuild version.
The build job can't use `actions/checkout` (even though the lint job does): the Gitea
runner executes JS actions by `docker exec node …` *inside* the job container, and
`gentoo/stage3` ships no node, so any JS action fails with exit 127. The lint job has no
`container:`, so it runs in the runner's default node-capable image and checkout works.
## Conventions / gotchas