aqnwb 0.3.0
Loading...
Searching...
No Matches
Making a Release

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

  • Create a release branch
  • Update version numbers and changelog
  • Run tests and lint and confirm that CI workflows are passing
  • Build and review docs
  • Create and merge PR
  • Create and push tag
  • Update changelog for next cycle

References