Skip to content

ci: fix Discovery Module Release toolchain and cover discovery modules pre-merge - #25

Merged
juicycleff merged 2 commits into
mainfrom
fix/discovery-release-go-toolchain
Aug 1, 2026
Merged

ci: fix Discovery Module Release toolchain and cover discovery modules pre-merge#25
juicycleff merged 2 commits into
mainfrom
fix/discovery-release-go-toolchain

Conversation

@juicycleff

@juicycleff juicycleff commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

The Discovery Module Release job failed on the v1.3.1 release run (run 30721527132):

=== Testing discovery/etcd ===
go: go.mod requires go >= 1.25.0 (running go 1.23.12; GOTOOLCHAIN=local)

Cause

The advisory fix in 0aa9069 pulled golang.org/x/net v0.54.0, x/sys v0.45.0 and x/text v0.37.0 into discovery/etcd and discovery/mdns. All three declare go 1.25.0, so go get raised those two modules from go 1.23.0 to go 1.25.0. The release job pins go-version: 1.23, and actions/setup-go sets GOTOOLCHAIN=local, so Go hard-failed instead of fetching a newer toolchain.

Reverting the directive is not an option — it would mean reverting the security upgrades. The job has to run on >= 1.25. The other four discovery modules stay at go 1.23.0 and build fine on a 1.25 toolchain.

Changes

  • release.yml — Discovery Module Release now uses Go 1.25.
  • ci.yml — new Discovery Modules job. The discovery modules are separate Go modules, so the root go test ./... never reached them; their first build was the post-merge release job, which is why this landed on main before anything compiled it. Modules are enumerated with find rather than hardcoded, so a new submodule is covered automatically.

Verification

Replayed the release job's steps (go mod tidy && go vet && go test -race, then go mod verify) against a git archive scratch copy with GOTOOLCHAIN=local: base module and all five submodules pass, all six verify, and go mod tidy is a no-op. The new CI job's script was run as-is — exit 0 across all six modules, and exit 1 with an ::error:: annotation when a module is given an unsatisfiable directive, having still visited every other module.

Note

v1.3.1 itself published fine; only the tagging job failed, so discovery/*/v1.3.1 tags were never created — those tags are still at v1.2.0, and appear to have been skipped for v1.3.0 too. Worth checking separately whether discovery tagging has ever succeeded since ac0fe18 added it.

discovery/etcd and discovery/mdns declare go 1.25.0, forced by their
golang.org/x/net, x/sys and x/text requirements, which came in with the
advisory fix in 0aa9069. actions/setup-go pins GOTOOLCHAIN=local, so the
job's Go 1.23 refused to build them:

    go: go.mod requires go >= 1.25.0 (running go 1.23.12; GOTOOLCHAIN=local)

The other four discovery modules stay at go 1.23.0 and build fine on a
1.25 toolchain, so the job now uses the highest directive across the set.
The discovery modules are separate Go modules, so the root `go test ./...`
never reached them. Their first build was the post-merge release job, which
is how the go 1.25.0 directive bump in 0aa9069 reached main before anything
tried to compile it.

Modules are enumerated with find rather than hardcoded, so a new submodule
is covered automatically -- the release job's fixed list would skip it. The
loop visits every module before exiting non-zero, so one broken module does
not hide the rest.
@juicycleff
juicycleff merged commit aa6da7a into main Aug 1, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant