Skip to content

Comments

fix(publish): retry draft release creation until tag is indexed#510

Merged
jdx merged 1 commit intomainfrom
fix/publish-retry-untagged-draft
Feb 18, 2026
Merged

fix(publish): retry draft release creation until tag is indexed#510
jdx merged 1 commit intomainfrom
fix/publish-retry-untagged-draft

Conversation

@jdx
Copy link
Owner

@jdx jdx commented Feb 18, 2026

Summary

  • After migrating to communique, draft releases were getting untagged-* placeholder tag names because the workflow calls the API within ~5s of checkout, before GitHub has indexed the tag
  • The old workflow had ~90s of built-in delay (npm install + Claude CLI generation) that masked the race condition
  • Adds a retry loop that creates the draft, verifies tag_name matches, and deletes + retries (up to 30 attempts × 5s) if it got an untagged-* placeholder

Test plan

  • Trigger a tag push and verify the draft release is created with the correct tag name
  • Verify taiki-e/upload-rust-binary-action finds the release successfully in build-and-publish jobs

🤖 Generated with Claude Code


Note

Low Risk
Workflow-only change that adds a bounded retry/delete loop to handle a GitHub indexing race; main risk is longer CI time or failure if the GitHub API behavior changes.

Overview
The publish-cli GitHub Actions workflow now retries draft release creation after a tag push, verifying the created release’s tag_name matches the pushed tag.

If GitHub returns an untagged-* placeholder, the workflow deletes the draft release, waits 5 seconds, and retries up to 30 times before failing with an explicit error.

Written by Cursor Bugbot for commit a40bd07. This will update automatically on new commits. Configure here.

GitHub's Releases API creates untagged-* placeholder tag names for draft
releases when the tag hasn't been fully indexed yet. Add a retry loop that
creates the draft, verifies the tag_name matches, and deletes + retries if
it got an untagged-* placeholder.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings February 18, 2026 14:05
@gemini-code-assist
Copy link

Note

Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported.

@codecov
Copy link

codecov bot commented Feb 18, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.88%. Comparing base (a18ba90) to head (a40bd07).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #510   +/-   ##
=======================================
  Coverage   77.88%   77.88%           
=======================================
  Files          48       48           
  Lines        6660     6660           
  Branches     6660     6660           
=======================================
  Hits         5187     5187           
  Misses       1109     1109           
  Partials      364      364           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@jdx jdx merged commit 1556927 into main Feb 18, 2026
15 of 16 checks passed
@jdx jdx deleted the fix/publish-retry-untagged-draft branch February 18, 2026 14:08
jdx pushed a commit that referenced this pull request Feb 18, 2026
### 🐛 Bug Fixes

- **(publish)** retry draft release creation until tag is indexed by
[@jdx](https://github.com/jdx) in
[#510](#510)
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Feb 19, 2026
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [usage](https://github.com/jdx/usage) | minor | `2.17.0` → `2.18.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>jdx/usage (usage)</summary>

### [`v2.18.0`](https://github.com/jdx/usage/blob/HEAD/CHANGELOG.md#2180---2026-02-18)

[Compare Source](jdx/usage@v2.17.4...v2.18.0)

##### 🚀 Features

- **(publish)** extract communique into separate enhance-release job by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;513](jdx/usage#513)

### [`v2.17.4`](https://github.com/jdx/usage/blob/HEAD/CHANGELOG.md#2174---2026-02-18)

[Compare Source](jdx/usage@v2.17.0...v2.17.4)

##### 🐛 Bug Fixes

- **(publish)** retry draft release creation until tag is indexed by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;510](jdx/usage#510)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNC4yIiwidXBkYXRlZEluVmVyIjoiNDMuMjQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6Om1pbm9yIl19-->
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