A release is a git tag plus a GitHub release with one zip per platform. The build and the upload are
automated: pushing a vX.Y.Z tag runs the "Build UnityDataTool" action, which publishes a draft
release with the zips and their checksums attached. What is left is the version bookkeeping around
the tag and writing the release notes.
UnityDataTool/UnityDataTool.csproj holds the version. On main the InformationalVersion always
carries a -dev suffix (for example 2.3.0-dev), which is what --version reports and what makes
the documentation link in --help point at main. A release strips that suffix, so a tagged binary
reports a bare 2.3.0 and links to the docs as they were at the tag.
Immediately after tagging, main moves to the next -dev version. That way work can land on
main right after a release without landing on a version number that has already shipped.
-
Check that the tests are green on
main: https://github.com/Unity-Technologies/UnityDataTools/actions. -
Drop the
-devsuffix fromInformationalVersion, commit asRelease vX.Y.Z, then tag and push both:git tag vX.Y.Z git push origin main git push origin vX.Y.Z -
Bump
mainto the next version:AssemblyVersionandFileVersiontoX.Y+1.0.0,InformationalVersiontoX.Y+1.0-dev. Commit and push. -
The tag push builds
UnityDataTool-windows-x64.zip,UnityDataTool-macos-arm64.zipandUnityDataTool-linux-x64.zip, writeschecksums.txt, and creates the draft release. Confirm all four assets arrived:gh release view vX.Y.Z -
Write the notes and publish. The generated notes list the merged PRs; a short summary of the user-visible changes on top of them is what most readers actually read.
gh release edit vX.Y.Z --title "vX.Y.Z <short description>" --draft=false
Steps 2 and 3 are mechanical and worth scripting if you cut releases often.
https://github.com/Unity-Technologies/UnityDataTools/releases/latest/download/UnityDataTool-windows-x64.zip
only works as a permanent download link while the asset names stay the same from release to release.
The README and the agent guide hand those URLs to users, so the names should not be changed or have
the version added back into them. The version is in the release title, in checksums.txt, and in
--version.
Re-running the action for a tag that already has a release re-uploads the assets over the existing ones, so a failed or incomplete run can simply be re-run.