[DE-4549] refactor(release): move artifact distribution into its own package - #13893
Open
radTuti wants to merge 12 commits into
Open
[DE-4549] refactor(release): move artifact distribution into its own package#13893radTuti wants to merge 12 commits into
radTuti wants to merge 12 commits into
Conversation
Replaces ghr and gh for release publishing: go-github handles drafts, asset replacement and undrafting, none of which the CLIs did idempotently.
Splits hashreleaseserver.Publish into Record: the upload is now the shared GCS handler, which gives hashreleases a working dry run.
Publish is sequential: the list is a pipeline, so a later upload can depend on an earlier one having landed.
release publish already undrafts and sets latest, so the separate command was a second path to the same GitHub calls.
Drops WithRecord: distribution's destinations are idempotent, so there is nothing for a resume to skip, and the refs it wrote could not be verified.
A draft carries no git tag, so taking one live by tag never found it. Also takes the latest release from GitHub rather than inferring it from list order.
With metadata being built at publish, it needs to read for manifest dir in the hashrelease source dir. Also moves the release metadata record onto the manager, so the shared package defines the Attester interface and each product owns what it writes.
A retried release checksummed the previous run's SHA256SUMS into itself, so verification always failed, and queued it for upload twice. The chart index also went out before the github release serving its download URLs.
radTuti
enabled auto-merge (squash)
September 12, 2026 04:39
radTuti
disabled auto-merge
September 12, 2026 04:39
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.
Publishing artifacts moves into its own package. A flow now assembles an ordered list of what goes where, instead of a function per destination, so the difference between a release and a hashrelease is the list rather than a branch in the code. Release publishing talks to the GitHub API instead of shelling out to ghr and gh.
Additionally:
release publishis now re-runnable. If a run fails partway, re-running it finds the draft release the earlier run left and takes it live, rather than creating a second one alongside it.Release note:
AI assistance: Claude Code wrote most of the code and tests. Design decisions and review are mine.