Harden publish workflow recovery, notifications, and dispatch guard - #790
Conversation
|
👋 Hello @glenn-jocher, thank you for submitting a
For more guidance, please refer to our Contributing Guide. Don't hesitate to leave a comment if you have any questions. Thank you for contributing to Ultralytics! 🚀 |
UltralyticsAssistant
left a comment
There was a problem hiding this comment.
🔍 PR Review
Made with ❤️ by Ultralytics Actions
No genuine issues found. The workflow changes are coherent: the dispatch guard is tightened, recovery reruns are handled more safely, publishing and SBOM upload are made idempotent, and notification dependencies now reflect both publish and SBOM outcomes.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
🚀 Merged — thank you @glenn-jocher for strengthening the “Success is not final, failure is not fatal: it is the courage to continue that counts.” — Winston Churchill This update embodies that mindset by making publishing, tagging, SBOM uploads, and notifications more resilient and recovery-friendly. The added safeguards against duplicate releases, safer PyPI retries, improved SBOM handling, and more accurate Slack notifications will help maintainers recover faster from partial failures while keeping releases clean and reliable. Appreciate the thoughtful improvements that make Ultralytics automation more robust for everyone 🙌 |
🛠️ Summary
Ports the release-workflow hardening from ultralytics/template#91 (and matching PRs in mkdocs/ultralytics). The
publish.ymlpipeline previously had no recovery path after a partial failure, and Slack could report success before the pipeline finished.1. Failed releases can now be recovered via
workflow_dispatchOnce the tag is pushed, any downstream failure (build, PyPI upload, SBOM) previously left the release unrecoverable — a re-run hit
git tag -aon the existing tag and thecheckjob died. Now, when thepypidispatch input is checked, the run proceeds as a recovery re-run:workflow_dispatchwithpypi: trueforcesincrement=Truegit ls-remote)gh release view), healing the tag-pushed-but-no-release state, and unshallows history first so the changelog resolves the true previous tagprevious_tagoutput is omitted on recovery re-runs (online == local) so the summarizer falls back to the real previous tag instead of comparingvX...vXskip-existing: true; SBOM upload uses--clobberA partially failed release can be re-run from any point and completes only what is missing.
2. Slack success can no longer fire prematurely
notifynow includessbominneedsand in the success/failure conditions, so the ✅ message reflects the entire pipeline rather than racing the SBOM job.3.
workflow_dispatchcan no longer release a non-main commitThe
checkjob now requiresgithub.ref == 'refs/heads/main'.🧪 Testing
🛠️ PR Summary
Made with ❤️ by Ultralytics Actions
🌟 Summary
Improves the release workflow for
ultralytics/actionsto make publishing, tagging, SBOM uploads, and notifications more reliable and recovery-friendly 🚀📊 Key Changes
mainbranch only, reducing accidental publishes 🔒--clobber, allowing replacement of existing SBOM files ♻️🎯 Purpose & Impact