unityctl Release Workflow
Create a new release of the unityctl project.
Process Overview
- Analyze changes since last version tag to determine release type
- Bump version in
Directory.Build.props - Run
./dev-install.shto build and update artifacts - Commit version bump and build artifacts
- Push commit and version tag
- Create draft GitHub release with changelog
Step 1: Analyze Changes
Get the latest tag and diff to determine version type:
# Get latest version tag
git describe --tags --abbrev=0 --match "v*"
# View commit log since last tag
git log $(git describe --tags --abbrev=0 --match "v*")..HEAD --oneline
# View full diff since last tag
git diff $(git describe --tags --abbrev=0 --match "v*")..HEAD --stat
Version Bump Guidelines
- Major (X.0.0): Breaking API changes, protocol incompatibilities, removed features
- Minor (0.X.0): New features, new commands, significant enhancements
- Patch (0.0.X): Bug fixes, documentation updates, minor improvements
Review the changes and propose a version bump type to the user.
Step 2: Update Version
Edit Directory.Build.props to update the <Version> element:
<Version>X.Y.Z</Version>
Step 3: Build and Install
Run the dev-install script to build the solution and update artifacts:
./dev-install.sh
This will update:
UnityCtl.UnityPackage/Plugins/UnityCtl.Protocol.dllUnityCtl.UnityPackage/package.json(version synced automatically)
Step 4: Commit Changes
Stage and commit the version changes:
git add Directory.Build.props
git add UnityCtl.UnityPackage/Plugins/UnityCtl.Protocol.dll
git add UnityCtl.UnityPackage/package.json
git commit -m "bump X.Y.Z"
Step 5: Push and Tag
git push origin main
git tag vX.Y.Z
git push origin vX.Y.Z
Step 6: Create Draft GitHub Release
Generate a changelog from commits since the last tag and create a draft release:
# Generate changelog
git log $(git describe --tags --abbrev=0 --match "v*" HEAD^)..HEAD --pretty=format:"- %s" --no-merges
# Create draft release
gh release create vX.Y.Z --draft --title "vX.Y.Z" --notes "CHANGELOG_CONTENT"
Changelog Format
Organize the changelog by category:
## What's Changed
### Features
- New feature description
### Improvements
- Enhancement description
### Bug Fixes
- Fix description
### Documentation
- Doc update description
**Full Changelog**: https://github.com/DirtybitGames/unityctl/compare/vPREVIOUS...vX.Y.Z
Interaction Guidelines
- Always show the diff analysis first and propose a version type (major/minor/patch)
- Wait for user approval of the version number before proceeding
- Show the proposed changelog before creating the GitHub release
- Confirm success by showing the release URL at the end
Files Modified
The release process modifies these tracked files:
Directory.Build.props- Version numberUnityCtl.UnityPackage/Plugins/UnityCtl.Protocol.dll- Built protocol assemblyUnityCtl.UnityPackage/package.json- Unity package version (auto-synced)