Skip to content

ci(release): replace dead proxy-warm with direct-mode resolution check - #2

Closed
nodeselector wants to merge 1 commit into
mainfrom
nodeselector/migrate-lockfile
Closed

ci(release): replace dead proxy-warm with direct-mode resolution check#2
nodeselector wants to merge 1 commit into
mainfrom
nodeselector/migrate-lockfile

Conversation

@nodeselector

@nodeselector nodeselector commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

Follow-up to #1 (merged). One commit (ab1f88d) that landed on the branch after #1 merged, so it isn't in main yet.

What & why

The first go/v0.0.1 release surfaced two things:

  1. The proxy-warm step was dead. This repo is private, so proxy.golang.org can't see the module — the warm curl 404'd on every release. There's no shared proxy serving a private module anyway; the toolchain resolves it direct over git.

    Replaced it with a direct-mode resolution smoke test: spin up a throwaway module and go mod download <module>@<version> with GOPROXY=direct + GOPRIVATE=github.com/github/* — the same path consumers use. In CI, git auth is injected from GH_TOKEN via GIT_CONFIG_* so go's child git can fetch the private tag. Best-effort and non-fatal: the tag and Release are already published by then. Run locally, it also warms your module cache.

    main's script/release still has the dead curl (line 117); this lands the fix so the next release from main is clean.

  2. CodeQL Analyze (csharp) was red. That was default code-scanning setup auto-detecting C# from the old dotnet harness (since deleted). The default-setup language list is already corrected to actions, go — no repo file references C#. Merging this refreshes main's CodeQL with a clean actions + go run, retiring the stale csharp failure.

Verification

  • bash -n + shellcheck clean.
  • RELEASE_DRY_RUN=1 script/release {patch,minor,major} → bumps compute correctly.
  • Direct-mode resolution proven locally against the live go/v0.0.1 tag (go list -m -versionsv0.0.1).
  • GIT_CONFIG_* injection verified honored by git (≥ 2.31).

No Go source or contract change — release tooling + docs only.

The repo is private, so proxy.golang.org can't see the module and the warm
curl 404'd on every run. Replace it with a toolchain resolution smoke test:
spin up a throwaway module and 'go mod download MODULE@version' in direct
mode (GOPROXY=direct, GOPRIVATE=github.com/github/*) — the same path consumers
use. In CI, git auth is injected from GH_TOKEN via GIT_CONFIG_* so go's child
git can fetch the private tag. Best-effort and non-fatal: the tag and Release
are already published. Run locally it also warms the module cache.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 8, 2026 16:36

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Not ready to approve

The new smoke test as written will not work reliably (invalid go mod init module path under Go 1.19+ and non-portable mktemp -d for local runs), undermining the PR’s primary objective.

Pull request overview

This PR updates the Go submodule release workflow to remove the ineffective public Go proxy “warm” step (not applicable to a private module) and replace it with a best-effort direct-mode module resolution smoke test that mirrors how consumers fetch via GOPROXY=direct + GOPRIVATE.

Changes:

  • Added a verify_module_resolves helper to create a temporary module and go mod download the just-released version in direct mode (with optional git auth injection via GH_TOKEN).
  • Replaced the old proxy.golang.org curl “warm” step with the new resolution check (non-fatal).
  • Updated RELEASING.md to reflect the new release behavior and rationale for private-module direct resolution.
File summaries
File Description
script/release Replaces dead proxy warm with a direct-mode go mod download resolution smoke test, including optional git auth injection.
RELEASING.md Updates release documentation to describe the new best-effort direct resolution verification for a private module.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 2

Note

Your feedback helps us improve the quality of this feature.
Please use 👍 or 👎 to tell us whether this assessment is correct.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread script/release
dir="$(mktemp -d)"
(
cd "$dir"
go mod init release-verify >/dev/null 2>&1 || exit 1
Comment thread script/release
# release-blocker, since the tag and Release are already published.
verify_module_resolves() {
local module_version="$1" dir status
dir="$(mktemp -d)"
Copilot stopped work on behalf of nodeselector due to an error June 8, 2026 16:47
@nodeselector
nodeselector deleted the nodeselector/migrate-lockfile branch July 8, 2026 16:35
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.

2 participants