Skip to content

fix(release): make partially published releases retryable - #37

Merged
apcha-oai merged 1 commit into
nextfrom
apcha/retry-homebrew-release
Jul 24, 2026
Merged

fix(release): make partially published releases retryable#37
apcha-oai merged 1 commit into
nextfrom
apcha/retry-homebrew-release

Conversation

@apcha-oai

Copy link
Copy Markdown
Contributor

Why

The v1.5.0 publish run partially uploaded its GitHub release assets, then received 404 Not Found for two Windows uploads. GoReleaser exited before publishing the Homebrew cask, leaving openai/homebrew-tools on v1.4.0. A normal rerun is not reliably recoverable because the successfully uploaded assets already exist.

Fix

Enable GoReleaser's release.replace_existing_artifacts so a rerun can replace previously uploaded assets, finish publishing, and reach the Homebrew cask PR. Target next so the setting ships with the next release; it does not retroactively change the existing v1.5.0 tag.

Validation

  • Parsed .goreleaser.yml and verified schema version 2 and replace_existing_artifacts: true.
  • git diff --check.
  • PR CI runs the full GoReleaser snapshot build.

Failed v1.5.0 run: https://github.com/openai/openai-cli/actions/runs/30107350402

@apcha-oai
apcha-oai requested a review from a team as a code owner July 24, 2026 22:29
@apcha-oai
apcha-oai enabled auto-merge (squash) July 24, 2026 22:31

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the exact head 833ba2cf46c9280da0daf087e864217bbc985174. No substantive findings.

I verified that the pinned GoReleaser v2.15.4 supports release.replace_existing_artifacts and only invokes it after a duplicate-asset 422, where it deletes the exact matching release asset and retries the upload. That is the missing recovery path for the partial v1.5.0 publish: 22 assets were already present, the two failed Windows archives were absent, and GoReleaser stopped before the Homebrew publisher. The exact-head CI is green, including the full GoReleaser snapshot build, and git diff --check passes.

Holding the final approval stamp for Justin's explicit go-ahead.

@HAYDEN-OAI HAYDEN-OAI 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.

Reviewed exact head 833ba2c. No substantive findings. The change adds the correct GoReleaser v2.15.4 recovery path for future tagged releases: on a duplicate-asset 422, GoReleaser deletes only the same-named existing GitHub release asset and retries, allowing a rerun after partial upload to complete the release before the Homebrew cask publisher runs. I also verified the publish ordering, serialized publish concurrency, source-repo contents-write app token, tap contents and pull-requests write token, detached-tag behavior, and the documented non-retroactive scope for v1.5.0. Exact-version goreleaser check passed against this head, and current CI is green including the snapshot release build.

@apcha-oai
apcha-oai merged commit f823929 into next Jul 24, 2026
5 checks passed
@apcha-oai
apcha-oai deleted the apcha/retry-homebrew-release branch July 24, 2026 22:40
@stainless-app stainless-app Bot mentioned this pull request Jul 24, 2026
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.

3 participants