Release Guide
Major Release Guide
These docs outline the process for releasing a new version of Basilisk. It is intended for developers and maintainers of the Basilisk software.
The high level steps to release a new version of Basilisk are as follows:
Create a new branch
feature/v2_X_Yondevelopfor the release.Modify the version number in
docs/source/bskVersion.txtto reflect the new release.Add release date to
docs/source/Support/bskReleaseNotes.rstanddocs/source/Support/bskKnownIssues.rstfiles.Integrate content of
docs/source/Support/bskReleaseNotesSnippets/_compiled_latest.rstintobskReleaseNotes.rst. Delete the release notes snippets.Ensure documentation builds without warnings or errors.
Push branch to origin and do a PR.
Merge
developintomasterAdd release tag
v2.X.YtomasterCreate a Release on GitHub
To prepare develop for the next beta cycle:
Create
beta_X_YbranchModify the version number in
docs/source/bskVersion.txtto reflect the new beta cycle such asv2_X_Y_beta.Update
docs/source/Support/bskReleaseNotes.rstanddocs/source/Support/bskKnownIssues.rstfiles to next beta cycleMake PR and push to
developManually run the
Nightly Wheelsworkflow using theworkflow_dispatchtrigger after merging the beta branch so the nightly package index is republished on GitHub Pages.
The following documentation provides detailed instructions for some of these steps.
Updating the Version Number
The version number is stored in the docs/source/bskVersion.txt file. This file
gets read by the pyproject.toml during packaging to set the version of the
package. Previously, this file was updated automatically during the CI/CD
process; however, it must now be updated manually to prevent excessive version
bumps.
Update this file to reflect the new version number following semantic versioning
guidelines (e.g., MAJOR.MINOR.PATCH).
For a release candidate, set the version to MAJOR.MINOR.PATCHrcN
(e.g., 2.10.2rc1). This ensures artifacts built from an RC tag are
correctly identified as pre-release and are published to TestPyPI rather than
production PyPI. Once the release candidate is validated and a final release tag
is pushed, reset bskVersion.txt to the plain MAJOR.MINOR.PATCH form
(e.g., 2.10.2) before tagging.
Updating the Release Notes
For normal PR development, release notes are contributed as snippet files in:
docs/source/Support/bskReleaseNotesSnippets.
These snippets are compiled and included automatically into the current
Version |release| section in docs/source/Support/bskReleaseNotes.rst when documentation is built.
Creating a Release Branch
Active development occurs on the develop branch. Once all commits for a new
minor release have been merged into develop, then a release branch feature/v2_X_0 is created
off of develop where the version number and changelog are updated. After feature/v2_X_0
is merged into develop, develop is merged into master and that commit is tagged with v2.X.0.
All patches and fixes for the 2.X release line must be made on the patch/v2_X_x branch.
Any changes applied to the release branch should also be merged or cherry-picked
back into develop to ensure they are included in future releases.
Creating a Release on GitHub
After pushing the release tag, create a new release on GitHub:
Go to “Code” tab, on right column select Releases
Select “Draft new Release”
Select correct tag
v2.X.YonmasterAdd title “Basilisk v2.X.Y”
Add release notes
Remove all
:ref:statements from release notesBottom of page, press “Publish Release” button
This will make the release official and provide users with information about the new version.
Patch Release Guide
Once a major tagged release (v2.X.0) exists we only maintain this latest v2.X.Y patch release on
a branch patch/v2_X_x and the current beta on develop.
To release a patch version v2.X.Y the following steps are used:
If this is the first patch since
v2.X, create a branch off thev2.X.0tagged release onmasterand call itpatch/v2_X_x. Pull thispatch/v2_X_xbranch.Cherry pick over the commits from
developfor this patch release.Update Basilisk version number in
docs/source/bskVersion.txtto2.X.Y.Update
docs/source/Support/bskReleaseNotes.rstby removing release notes snippets to add them tobskReleaseNotes.rstdirectly in a dated section for2.X.Y.If needed, update
docs/source/Support/bskKnownIssues.rstto have a section for2.X.Y.Locally test a clean build of Basilisk and documentation.
Push branch to
origin.On https://github.com/AVSLab/basilisk/actions, run the action “Pull Request” on the branch
patch/v2_X_x. Wait for tests to complete.Add a tag
v2.X.Yto this branch and push tag to origin. This will trigger the wheel build process.The last step does not trigger the patch release documentation process as this patch release is neither on
masterordevelop. On https://github.com/AVSLab/basilisk/actions manually run the actionMerge to master or developon the branchpatch/v2_X_x.The last step deletes the online developer documentation and it needs to be rebuilt. On https://github.com/AVSLab/basilisk/actions manually run the action
Merge to master or developon the branchdevelop.Create a Release on GitHub
Important
Never develop directly on multiple branches in parallel for the same fix. This leads to divergence and hard-to-resolve conflicts.
Do not merge
developback intov2.Xafter the release branch is created. Release branches must remain stable and focused on fixes only.Cherry-picks should be small, focused, and preferably reference the original commit hash in the message.
Releasing the BSK SDK
The bsk-sdk package vendors the Basilisk SDK headers and runtime for plugin authors. Its version is kept in sync with Basilisk, so a new BSK release requires a corresponding SDK release.
The following steps are to be done after the Basilisk v2.X.Y release is fully completed.
This ensures that the Basilisk release is completed and available on the expected Basilisk branch.
Major SDK Release
To release a major version 2.X.0 the following steps are used:
On a branch of develop, update the
versionfield inpyproject.tomlto match the new major BSK release (e.g.2.X.0).Push branch to
originand create a PR to trigger the CI workflow to test the SDK wheel.Merge the PR to
developonce CI tests pass.Merge
developintomaster.Add the tag
v2.X.0tomasterand push tag to origin to trigger the wheel build and PyPI publish via GitHub Actions.Create a Release on GitHub
Patch Release
To release a patch version 2.X.Y the following steps are used:
If this is the first patch since
v2.X, create a branch off thev2.X.0tagged release onmasterand call itpatch/v2_X_x. Pull thispatch/v2_X_xbranch.Cherry pick over the commits from
developfor this patch release.Update the
versionfield inpyproject.tomlto match the patch BSK release (e.g.2.X.Y).Update
.github/workflows/ci.yml, sectionInstall bsk-sdk wheel and Basilisk, to pull the matching Basilisk branch--branch patch/v2_X_xCommit edits and push to
originManually run the
CIaction on https://github.com/AVSLab/bsk_sdk/actions. Wait for tests to complete.Add the tag
v2.X.Ytopatch/v2_X_xand push tag to origin to trigger the wheel build and PyPI publish via GitHub Actions.Create a Release on GitHub