Skip to content

Fix edge release getting stuck as an untagged draft - #1106

Merged
cdalar merged 1 commit into
mainfrom
fix/edge-release-publish-race
Sep 9, 2026
Merged

cdalar merged 1 commit into
mainfrom
fix/edge-release-publish-race

Conversation

@cdalar

@cdalar cdalar commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Summary

  • gh release create with assets is 3 separate API calls (create as draft + tag, upload assets, publish) -- confirmed via gh release create --help. The publish step shared edge.yml's build job's cancel-in-progress: true group, so a second push to main arriving mid-upload could kill the run right between "create draft" and "publish", leaving the rolling edge release stuck as an untagged draft. A draft release has no real git tag, so get_edge.sh's download URL 404s.
  • Splits the workflow into a build job (still pre-empted by newer pushes -- nothing on GitHub to leave half-done) and a publish job (its own concurrency group, cancel-in-progress left at its default false, so a run that reaches publish always finishes it; concurrent publishes queue instead of cancelling each other).
  • build now uploads the dist artifacts; publish downloads them before running the existing delete/create/upload sequence unchanged.

Test plan

  • python3 -c "import yaml; yaml.safe_load(open('.github/workflows/edge.yml'))" -- valid YAML
  • actionlint .github/workflows/edge.yml -- no new findings (only the pre-existing, repo-wide unknown-self-hosted-runner-label warning)
  • Watch the next push to main trigger build -> publish and confirm edge release comes out non-draft with a real tag

🤖 Generated with Claude Code

https://claude.ai/code/session_01CbaBqrs4TbaUo7qj1dU7zp

gh release create --help: attaching assets is 3 API calls (create as
draft, upload assets, publish). Sharing the build job's cancel-in-progress
group meant a second push could kill the publish step mid-upload,
leaving `edge` stuck as an untagged draft -- which breaks
get_edge.sh's download URL. Publish now runs in its own job/group
with cancel-in-progress off, so once a run reaches publish it always
finishes; only builds get pre-empted by newer pushes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CbaBqrs4TbaUo7qj1dU7zp
@cdalar
cdalar merged commit 84d0c6b into main Sep 9, 2026
12 checks passed
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

⌂ 换网址