Skip to content

ci: retry publishing the dev prerelease before giving up - #21

Merged
dmccoystephenson merged 1 commit into
mainfrom
fix/dev-release-retry
Aug 14, 2026
Merged

ci: retry publishing the dev prerelease before giving up#21
dmccoystephenson merged 1 commit into
mainfrom
fix/dev-release-retry

Conversation

@dmccoystephenson

Copy link
Copy Markdown
Member

Hardening for the Dev Release workflow added during the Dan's Plugin Manager experimental-channel rollout.

The problem this fixes

For DPM to see a new experimental build, the dev tag has to move to the new commit — and moving it requires the release to be deleted and recreated, because editing a published release does not move its tag. That leaves a short window in which the repository has no dev release.

A transient API failure inside that window strands the repository there. It is not hypothetical: within four days of the rollout, three repositories were affected.

Repository Date Cause Effect
KDRTracker 2026-08-13 GitHub API HTTP 502 No dev release at all for roughly a day
Conquest-Recipes 2026-08-13 the same 502 incident Stale dev build
SimpleSkills 2026-08-12 Maven Central 429 Stale dev build

Nothing surfaced any of this. It was found by a manual sweep, and for anyone pinned to the experimental channel it would have appeared only as /dpm update quietly skipping the plugin.

The change

Publishing is attempted up to three times, with a growing delay between attempts. Each attempt begins with the delete, so a half-finished previous attempt — release created, asset upload failed — cannot wedge the retry. If all three attempts fail, the run fails with a message saying the dev release may be missing until the workflow is re-run.

Verification

The retry loop was extracted from the workflow and exercised in a shell against a stubbed gh that fails a configurable number of times:

  • fails 0 times → publishes, exits 0
  • fails 2 times → recovers on the third attempt, exits 0 (the KDRTracker scenario)
  • fails 3 times → exits 1 with the explicit message

The --notes body and the one-JAR assertion are unchanged.


drafted by Claude on behalf of Daniel Stephenson

The dev tag has to move to the new commit for Dan's Plugin Manager to see a new
build, and moving it means deleting and recreating the release. A transient API
failure inside that window left the repository with no dev release at all, with
nothing to alert anyone: KDRTracker lost its dev release for a day to an HTTP
502, and Conquest-Recipes went stale in the same incident.

Publishing is now attempted up to three times with a growing delay. Each attempt
starts by deleting, so a half-finished attempt cannot wedge the next one, and an
exhausted retry fails the run with an explicit message.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dmccoystephenson
dmccoystephenson merged commit 8aa7057 into main Aug 14, 2026
1 check passed
@dmccoystephenson
dmccoystephenson deleted the fix/dev-release-retry branch August 14, 2026 14:43
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