AqNWB releases are managed via GitHub using semantic versioning. AqNWB is released as source-releases only without pre-build binaries.
Release Steps
1. Create a Release Branch
Create a new branch from main:
git checkout -b release/vX.Y.Z
2. Update Version Numbers
Update the version numbers in the following files:
- CHANGELOG.md: Move "Unreleased" changes to new version section, set date.
- CMakeLists.txt: Update the VERSION argument in the project() command.
- Doxygen retrieves the version from CMake, so no need to modify the docs.
3. Commit and Push Changes
git add -u
git commit -m "Release vX.Y.Z: update version numbers and changelog"
git push --set-upstream origin release/vX.Y.Z
4. Test Locally
Run tests, lint, cppcheck, and docs. Review, fix errors, and commit changes before PR merge.
cmake --preset=dev
cmake --build --preset=dev
ctest --preset=dev --output-on-failure
cmake --build --preset=dev --target=format-fix
cmake --build --preset=dev --target=spell-check
cmake --build --preset=dev --target=docs
cmake --build --preset=dev --target=cppcheck
5. Open Pull Request
- Open a PR from release/vX.Y.Z to main.
- Wait for CI to complete and fix any errors.
- Review GitHub security warnings for the PR (query is:open pr:<PR_NUMBER>)
- Review, approve, and merge the PR from release/vX.Y.Z to main.
6. Tag the Release (after PR merge)
git checkout main
git pull
git tag -a vX.Y.Z -m "AqNWB vX.Y.Z release"
git push origin vX.Y.Z
7. Draft GitHub Release
- Go to GitHub Releases page
- Click "Draft a new release"
- Select the tag, paste changelog notes, attach artifacts if needed
- Publish
8. Post-Release
- Announce release (mailing list, Slack, etc.)
- Monitor CI/CD
- Update "Unreleased" section in CHANGELOG.md
Quick Checklist
- Update version numbers and changelog
- Run tests and lint and confirm that CI workflows are passing
- Update changelog for next cycle
References