Fix release updater manifest race - #199
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
Reviewed the release workflow matrix change. max-parallel: 1 serializes the platform build jobs, preventing concurrent updates to the shared updater manifest. LGTM.
|
🎉 This PR was merged—thank you, @glenn-jocher! Setting the publish matrix to run one build at a time helps each build read the latest manifest before updating the shared
A fitting reminder of how sequential builds help preserve each platform entry. |
The v0.0.59 publish failed because concurrent Tauri builds replaced the shared
latest.json: all installers uploaded successfully, but the final manifest retained only Windows entries. Linux and Windows uploaded the manifest within one second of each other.Serialize the release matrix so each build reads the previous platform entries before replacing the manifest. This trades longer release duration for preserving all platforms, while keeping the existing publication checks unchanged.
Validation:
actionlint .github/workflows/publish.ymlandgit diff --checkpass. Confirmed the draft manifest fails the existing required-platform check and inspected Tauri v1’s read/merge/replace implementation. Full release execution requires merging; retrying the old run would retain the race.Failed job: https://github.com/ultralytics/lite/actions/runs/35981923194/job/107578064683
🛠️ PR Summary
Made with ❤️ by Ultralytics Actions
🌟 Summary
The publish workflow now runs release-matrix builds one at a time to prevent concurrent updates from overwriting platform entries in
latest.json.📊 Key Changes
max-parallelvalue to1.latest.jsonrelease asset.🎯 Purpose & Impact