ci: run the dind jobs in the prebuilt tools image
Verified the ci/tools:2 digest pulls and has every tool plus Go 1.26.9. CI lint returned 403 here, so that line stays tied to the earlier dry run. Here's the description:
Follow-up to !5142 (merged), now merged (squash 10d7608006).
ci/tools:2 is published: develop's build-ci-tools-image job 17066463046 built it from the current ci/Dockerfile.ci-tools (Go 1.26.9) and pushed sha256:29b5fe763a4b6fd27e5f7a19c8744e1f9dc39870dcb6ac571661d44cbb5d0e7c. CI_TOOLS_IMAGE pins that digest (ci/tools:2@sha256:29b5fe76…). Any Developer's CI_JOB_TOKEN can push to this registry. With the digest pinned, a replaced tag fails to pull instead of running in build-thornode, which holds the release-image push credentials. This MR first pinned ci/tools:1 (sha256:7b82d617…), but that image was built from golang:1.26.4. That is below go.mod's toolchain go1.26.9, so every job still downloaded the toolchain.
Change
- generate, the proto jobs (format check, lint, breaking check), build-thornode/thorscan/events and test-mocknet-scripts now run in
$CI_TOOLS_IMAGE(ci/Dockerfile.ci-tools). Before, they ranapk addagainst dl-cdn.alpinelinux.org on every job, which caused 38 failures from 2026-09-14 to 09-28. The image comes in through the shared.use_dindanchor and theimage:on test-mocknet-scripts. test-simulation and test-regression keep their own images. - The jobs that installed Alpine's
gono longer download the go.mod toolchain from proxy.golang.org, because the image ships Go 1.26.9. WithGOTOOLCHAIN=autothat version is a floor, so a later toolchain bump downloads the newer Go instead of breaking these jobs. TheGOTOOLCHAINcomment is updated to match. CI_TOOLS_IMAGEis pinned by digest, as above. A new tools image means bumpingCI_TOOLS_VERSION, letting develop publish it, and then pinning the digest it prints ("Pin jobs to: ...").build-ci-tools-imageoverrides the anchor's image and stays on plaindocker:28.5.2, so a missing or broken tools image can always be rebuilt.- Cherry-picks a regression golden regen (
2c3dca68, fromitz/regtest-fixture-regen-s09). On develop,b8b111b5fc(S09) added thexmr_mined_heightObservedTx field but did not regenerateadv-swap-queue/rapid-swaps-failed-market-budget.json, so test-regression fails with "blocks differ". The regen adds the field to that file's 3 ObservedTx and changes nothing else.
Validation
- CI lint (dry run on develop, before the
ci/tools:2pin): valid, no warnings. - The published
ci/tools:2image, pulled by the pinned digest, has bash, python3, jq, make, git, protoc, curl, wget, sed, find and Go 1.26.9. - The image builds locally with every tool the removed
apk addlines installed, andbuild/scripts/testspasses in it (38 tests).