script/cibuild fails on the Gitea runner: script/bootstrap cannot install Go #46

Closed
opened 2026-10-04 03:28:06 +02:00 by clawbot · 2 comments
Collaborator

Since #43 landed, script/cibuild is the sneak/prompts template: it runs script/bootstrap, then script/check, then the image build. The Gitea runner has Docker and git but no Go, and script/bootstrap cannot install Go there:

  • Its apt path runs apt-get install without ever running apt-get update, so on a fresh Debian or Ubuntu host (or a runner image) the package lists are empty and every install fails. In a clean ubuntu:24.04 container, script/bootstrap stops with E: Unable to locate package git.
  • script/fmt-check needs gofmt, and script/bootstrap runs go mod download, both on the host.

The CI run of the issue 38 branch failed within seconds, and next carries the same script/cibuild, so its run fails too: next cannot pass Gitea CI as it stands.

Work, on a branch cut from next, PR to next:

  • script/bootstrap installs Go at the exact version the Dockerfile's Go image carries, from the official release archive at https://go.dev/dl/, checked against a sha256 written in the script, whenever the installed go reports a different version or there is none. That is the form REPO_POLICIES.md gives for pinned tools: compare versions, never test presence. The scripts that need go or gofmt find the installed one even though bootstrap cannot change their caller's PATH, the way the template's script/fmt and script/fmt-check find node.
  • The apt path runs apt-get update once before its first install.
  • No sudo prompt and no interactive step; a non-root developer machine keeps working.
  • If #45 (prettier, also edits script/bootstrap) has landed when you rebase, keep its node and yarn steps.

Definition of done

  • On a fresh clone, script/bootstrap and then script/check pass inside a clean ubuntu:24.04 container that has only git and the Docker CLI added (the host's Docker socket mounted), and script/cibuild passes on the host.
  • The Gitea CI run of the PR branch passes.
  • make check passes.

Model: opus-5-5

Since https://git.eeqj.de/sneak/keyfunc/pulls/43 landed, `script/cibuild` is the `sneak/prompts` template: it runs `script/bootstrap`, then `script/check`, then the image build. The Gitea runner has Docker and git but no Go, and `script/bootstrap` cannot install Go there: - Its apt path runs `apt-get install` without ever running `apt-get update`, so on a fresh Debian or Ubuntu host (or a runner image) the package lists are empty and every install fails. In a clean `ubuntu:24.04` container, `script/bootstrap` stops with `E: Unable to locate package git`. - `script/fmt-check` needs `gofmt`, and `script/bootstrap` runs `go mod download`, both on the host. The CI run of the issue 38 branch failed within seconds, and `next` carries the same `script/cibuild`, so its run fails too: `next` cannot pass Gitea CI as it stands. Work, on a branch cut from `next`, PR to `next`: - `script/bootstrap` installs Go at the exact version the `Dockerfile`'s Go image carries, from the official release archive at `https://go.dev/dl/`, checked against a sha256 written in the script, whenever the installed `go` reports a different version or there is none. That is the form `REPO_POLICIES.md` gives for pinned tools: compare versions, never test presence. The scripts that need `go` or `gofmt` find the installed one even though bootstrap cannot change their caller's `PATH`, the way the template's `script/fmt` and `script/fmt-check` find node. - The apt path runs `apt-get update` once before its first install. - No `sudo` prompt and no interactive step; a non-root developer machine keeps working. - If https://git.eeqj.de/sneak/keyfunc/pulls/45 (prettier, also edits `script/bootstrap`) has landed when you rebase, keep its node and yarn steps. ## Definition of done - On a fresh clone, `script/bootstrap` and then `script/check` pass inside a clean `ubuntu:24.04` container that has only `git` and the Docker CLI added (the host's Docker socket mounted), and `script/cibuild` passes on the host. - The Gitea CI run of the PR branch passes. - `make check` passes. Model: opus-5-5
clawbot added the critical label 2026-10-04 03:28:06 +02:00
clawbot self-assigned this 2026-10-04 03:28:06 +02:00
Author
Collaborator

Labelled critical: next fails its Gitea CI run, because script/cibuild now bootstraps Go on the runner and script/bootstrap cannot install it there, so next cannot be shown green for a merge to main.

Model: opus-5-5

Labelled critical: `next` fails its Gitea CI run, because `script/cibuild` now bootstraps Go on the runner and `script/bootstrap` cannot install it there, so `next` cannot be shown green for a merge to `main`. Model: opus-5-5
Author
Collaborator

Built in #47: script/bootstrap installs the Dockerfile's Go (1.26.8) from go.dev, checked against a sha256 in the script, into ~/.local/go whenever the go on PATH reports another version. The scripts and the Makefile that need Go put that directory first on their PATH, and the apt path runs apt-get update before its first install.

Unverified: the Gitea CI run of the branch did not start within an hour of the push; it is still queued.

Model: opus-5-5

Built in https://git.eeqj.de/sneak/keyfunc/pulls/47: `script/bootstrap` installs the `Dockerfile`'s Go (`1.26.8`) from go.dev, checked against a sha256 in the script, into `~/.local/go` whenever the `go` on `PATH` reports another version. The scripts and the `Makefile` that need Go put that directory first on their `PATH`, and the apt path runs `apt-get update` before its first install. Unverified: the Gitea CI run of the branch did not start within an hour of the push; it is still queued. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/keyfunc#46