-
Notifications
You must be signed in to change notification settings - Fork 1
Release Management
Steven Maillet edited this page Jun 27, 2025
·
2 revisions
The release management process for this repository is largely automated by build scripts though there are some manual actions and on confirmation for a final release.
Important
There are a lot of steps involved though many are automated. The POST-RELEASE nature of a CSemVer-CI and the BuildVersion.xml add complexity. This is an area where tooling can help simplify the process but does not yet exist to do so. If/when such tooling exists, this wiki should be updated to reflect the new patterns.
- 'BuildVersion.xml' file is updated to the final release version (but NOT committed to any branch!).
- The reason it is updated is that it is read by the build scripts
OneFlow\Start-Release.ps1
to know what branch name to use when creating the branches for the release. - The reason it is NOT committed is that the release branch may have PR/CI builds and those MUST retain the base version of the release they are based on and NOT the soon to be released version.
- This is due to the fact that a CSemVer-CI build version is a POST-RELEASE version. It does NOT indicate what it will become, only what it was based on.
- The reason it is updated is that it is read by the build scripts
- 'OneFlow\Start-Release.ps1' is run to create the release branches based on the current contents of 'BuildVersion.xml'
- Any changes needed for the release are applied to the created release branch...
- This step is repeated as often as needed, though it should not require much if any use. Significant activity here indicates that the release wasn't really ready to begin with.
-
BuildVersion.xml
in the release branch is updated to reflect the final release version. - Changes to
BuildVersion.xml
are committed to the release branch and pushed to the official repository. -
OneFlow\Publish-Release.ps1
is used to complete the release which does several things.- Confirms intent to publish
- This is important to ensure the buildversion.xml was updated correctly. As of this writing the scripts don't verify the branch matches the contents of BuiildVersion.xml. (They can't as they use the file to get or create the branch!)
- Creates a tag to refer to the current state of the branch in perpetuity
- Pushes the version tag to the official repo
- This triggers the official build based on the tag reference
- Official build will build the binaries
- Official build will publish Built NuGet Packages to NuGet
- Official build will build the docs
- Official build will commit and publish the docs for the release
- Merge-back branch is created to merge changes since creation of the release branch to the develop branch
- This will at least contain the change to the
BuildVersion.xml
file
- This will at least contain the change to the
- Adjust main branch to refer to the tag of this release
- This allows easy access to latest release source via the main branch of the repository.
- This triggers the final release build based on that tag
- Creates a GH release in
Draft
form to allow customization 1) The release contains the generated NuGet Packages and source as a ZIP file
- Confirms intent to publish
- From the GH site create a PR for the merge back branch from the forked repository to the official
develop
branch.- Resolve any merge conflicts
- Complete the PR
- From GH official repo publish the release created by the script (see step 3.6)
- This is either a pre-release or set as the latest full release
Copyright ©️ 2025 Ubiquity.NET contributors, ALL RIGHTS RESRERVED