Repository navigation
fix(ci): avoid caching unpublished Go module versions - #21
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release preflight queried the public Go proxy before creating a tag, caching an unknown revision for up to 30 minutes. The five-minute verification window then failed even though the tag had been published correctly.
Use the proxy's cached-only endpoint for both checks before tag publication, preserving the existing-publication conflict guard without fetching an unpublished tag. After publication, retain the normal public proxy and allow 35 minutes of retry delays within a 45-minute job timeout; print response headers and body on exhaustion. Document recovery and add offline shell-step regression tests.
Why
Prevents the failure seen in the v0.7.0 release. The original tag and approved SDK source remain unchanged. See the Go proxy FAQ for negative-cache behavior and the cached-only endpoint.
Verification
make lintmake buildmake testmake docs-checkgo build ./examples/...Commands and results:
Regression cases cover unpublished and uppercase prerelease versions, an existing cached version with a missing tag, idempotent tag reuse, proxy errors, recovery after a simulated 30-minute miss, and bounded failure diagnostics. Tests execute the workflow shell steps with fake Git/HTTP/clock commands; they perform no publishing or real waits.
Impact
.env.live, logs, or generated test output committedAPI documentation, contract fixtures and migration notes are unchanged because this only changes release automation. Approval, immutable tag checks, source-SHA validation and public consumer compilation remain enforced.