build: Check Go and Node before building and move Docker to Alpine 3.24 #15
Labels
No labels
blocked
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
s1d3sw1ped/scratchbox!15
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "ash/toolchain-preflight-10"
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?
Closes #10.
scripts/check-toolchain.shis the forge-standards script, copied unchanged..nvmrccontaining24.check-toolchaintarget.build,devanddockerdepend on it, andrungets it throughdev. It runs beforeclean, so a mismatch removes nothing.ci.yamltest and build jobs) andrelease.yamlrunsh scripts/check-toolchain.shafter setup-go and setup-node.go.mod:toolchain go1.27.2.golang:1.27.2-alpine3.24, runtimealpine:3.24.Proof (clean checkout, Linux, go1.27.3)
make buildstops withfound: 20.19.2 / required: 24 / fix: nvm install 24 && nvm use 24.git status --ignoredstays empty, socleannever ran.make buildpasses (UI build plusbin/scratchbox) and the tree stays clean.make devstarts the server (it generated the default config, as before).build,dev,runanddockerall stop at the check with found/required/fix. A marker file inbin/survived, so nothing was cleaned.git checkout -- go.mod.make dockerwith the right toolchain, because neither machine has Docker. The base images are the standard tags.Tests
make testandmake test-raceboth pass.go test ./...gives 159 passed, 0 failed, 0 skipped.gofmtis clean.goimports -lflagscmd/scratchbox/main_test.go, which is an import-grouping issue that's already on master. I left it alone because it's out of scope.GO. This does what #10 asks and nothing more.
scripts/check-toolchain.shis byte-for-byte the forge-standards copy.build,devanddockerrun the check first, and it runs beforeclean, so a mismatch leaves the tree alone.runpicks it up throughdev.3c82757with that step in it.toolchain go1.27.2,.nvmrcis 24, and the Dockerfile moves togolang:1.27.2-alpine3.24andalpine:3.24. The action majors weren't touched, which is right while vulture#17 pilots them.One gap:
make dockerwith the right toolchain wasn't run, because neither machine has Docker. The image tags are standard and it's a patch bump, so I'm fine landing without it. If it breaks, revert the merge.This touches CI config, so it's on the normal merge path, not the low-risk one. Over to Linus.
Blake security/CI gate: APPROVE on
3c827577de(base develop1a51a12).Checked:
sh scripts/check-toolchain.shstep after setup-go/setup-node in ci (both jobs) and release. Triggers are unchanged (ci/fmt on push/pull_request; release on tags + dispatch), with no pull_request_target, no permissions change, no new secrets, actions or${{ }}in run:. The registry secrets stay in the tag/dispatch-only release docker job.efeeb0e) to the one approved on wls#21, SwipedCommissions#16 and Paste#12. No network; exit 1 with found/required/fix..nvmrc= 24, setup-node@v4node-version: "24"in ci and release, and Alpine 3.24'snodejspackage (used by the Docker builder) is 24.22.1. package.json has no engines field (optional).npm cifrom package-lock.json everywhere (CI, release, Dockerfile). The lockfile is unchanged and package.json has no pre/postinstall scripts. The only install script in the lock is fsevents (dev, macOS-only, pre-existing). No curl|sh.toolchain go1.27.2is a real release. golang:1.27.2-alpine3.24 and alpine:3.24 exist on Docker Hub.USER scratchbox(system user), EXPOSE 8080 only, no new caps.Non-blocking:
make dockerwasn't exercised here either: the jumpbox has no docker/podman. No PR CI job builds the image (only the release workflow does), so the base-tag bump is first built at the next tag. If you want a local proof, route adocker buildto Jerry/Dockge.make dockerruns the host preflight, but the image builds with its own pinned golang image and Alpine's nodejs, so the host check doesn't govern the image. That's fine, since the image pins match.