-
Notifications
You must be signed in to change notification settings - Fork 1
Unified Workflow Tools Release Procedure
Paul Madden edited this page Jan 7, 2025
·
5 revisions
- Create a release branch named for the new
<major>.<minor>.<patch>
version (e.g.2.1.0
) in theufs-community/uwtools
repository. Create the branch directly frommain
for major- or minor-version releases, or from a previous release branch for bug-fix releases (e.g. bug-fix release branch2.1.1
created from previous release branch2.1.0
). This step must be performed by a repo admin, as creation of new branches is restricted. - Target the new release branch with a PR from a fork.
- Follow the Update the version or build number procedure, below, as required for the release.
- Add any other necessary updates (e.g. bug fixes) to the PR, including changes cherry picked or otherwise selectively applied from other branches.
- For updates to old releases, consider whether anything under
.github
needs to be updated. This should be uncommon: If the package built in CI previously it should do so again. But certain changes to the repository configuration (e.g. names of repository secrets used in CI workflows) might necessitate changes under.github
. - As a meta-procedure, consider whether similar changes should be applied to other releases. For example, it may be appropriate to accompany a
2.1.0
->2.1.1
bug-fix release with a2.2.0
->2.2.1
release fixing the same bug for the2.2.x
series.)
- Merge the PR to the new release branch.
- Run the Release CI workflow against the new release branch via the GitHub web interface:
- On the Actions page, click Release under All workflows in the left pane.
- Click the Run workflow pull-down, select the new release branch, then click the green Run workflow button.
- Wait for the workflow to complete, then confirm publication of the new package on anaconda.org.
- Create a GitHub release for the new version via the GitHub web interface:
- Click Releases, then Draft a new release.
- Set Target to the new release branch.
- Click Choose a tag, then enter the version number with a "v" prefix, e.g.
v2.1.0
for version2.1.0
. This ensures that the tag name is distinct from the release branch name. Click + below the text-entry field to create the new tag when the release is published. - Set the Previous tag appropriately.
- Enter the Release title to match the tag (e.g.
v2.1.0
). - Click Generate release notes to pre-populate the release-description text box.
- Edit the pre-populated notes.
- Edit the
What's Changed
section to provide a synopsis of the release's high points. Use the list of PRs/commits as a guide, but summarize. - Remove the
New Contributors
section, if present. - Retain the
Full Changelog
section as generated.
- Edit the
- Ensure that Set as the latest release is selected if this is the very latest
uwtools
version (vs, say, a bug-fix release for an older version). - Click the green Publish release button.
- On
main
, follow the Update the version or build number, below, to set the version number for the next expectedmajor.minor.0
release.
Read the Docs will build and publish documentation for the new release due to having been notified about it by a webhook on the GitHub repository. As an RtD admin, visit the versions page and
- Edit any
<major>.<minor>.<patch>
versions (corresponding to git branches, which may receive future documentation updates) for which documentation should be displayed in the RtD fly-out menu to enable Active and disable Hidden. - Edit any
v<major>.<minor>.<patch>
versions (corresponding to git tags, which should be static over time) to disable Active and enable Hidden.
- Target the appropriate release branch with a PR updating content under
docs/
. - The
src/
directories must not change, andrecipe/
should only change in conjunction with a build update (see procedure immediately below). - Merge the PR.
- Read the Docs will be notified of commits to monitored branches and will rebuild and publish the updated docs under the existing version.
- Update the out-of-date tag (see procedure below).
- Target the appropriate release branch with a PR updating
buildnum
insrc/uwtools/resources/info.json
and/or content inrecipe/meta.yaml
(e.g. pins on dependency packages). The version number must not change. - The
docs/
directory should only change in conjunction with a documentation-only update (see procedure immediately above). - In general, code under
src/
should not change, though test updates may sometimes be appropriate. - After making the needed updates, in a base conda environment with the
condev
package installed (i.e. not in a development shell), runmake meta
, which will updaterecipe/meta.json
based on the updatedinfo.json
andmeta.yaml
. - Merge the PR.
- Execute (only) the "Run the Release CI workflow" step from the main release procedure. Do not proceed to the GitHub release step.
- Update the out-of-date tag (see procedure below).
In a fresh or up-to-date clone of the main repo (not a fork):
- Check out the branch:
git checkout <major>.<minor>.<patch>
. - Confirm that the
v<major>.<minor>.<patch>
tag points to a non-HEAD
commit in the output ofgit log
. - Update the tag locally:
git tag v<major>.<minor>.<patch> --force
. - Confirm that the
v<major>.<minor>.<patch>
tag now points to theHEAD
commit in the output ofgit log
. - Push the tag:
git push origin tag v<major>.<minor>.<patch> --force
.
Update the info.json
resource file, setting version
to the required version and buildnum
to 0
. Then, in a base conda environment with the condev
package installed (i.e. not in a development shell), run make meta
, which will update recipe/meta.json
based on the updated recipe/meta.yaml
and info.json
.