Curating a Release#
- UM Test Release
- Partner Testing
- Scientific Software Stack Update
- Release Notes
- Shumlib Release
- Mule Release
- Other Repositories
- Jules Release
- UM Main Release
- LFRic Apps Release
- Standard Suites
- Stash Browser
- UMDP Release
- Milestones and Projects
- Standard Jobs and Wiki Pages
- Repo and Shared Accounts Permissions
- Mid-Release Prebuilds
Code Review Deadline#
In the weeks leading up to the deadline, announcements should be made on the Simulation Systems Discussion Board to remind the community of the upcoming deadline.
Shortly after the deadline Issues that are not in review should be removed from the milestone. This is done here to give the assignees time to assess their work before the release happens.
python SimSys_Scripts/gh_review_project/cr_deadline.py --milestone=<title>
with an optional argument ``--dry`` to dry run the changes before doing them
for real.
Release Issue#
Open a Release Curation Issue in the git_playground, using the release
Issue template.
Stable + Main Release#
This section describes the process of merging main and stable. It assumes that any required release changes have already been merged into main and that all sources in the dependencies.yaml file are as they should be. This section is relevant for all repositories with a stable and main branch setup.
The release process will be completed by 2 people with commit privilege to the relevant repository. One will have developed the release branch and the other will review it (developer and reviewer below). It’s also worth making sure both people have signed the relevant CONTRIBUTORS file - do this in a separate PR first if not.
Before starting, an
adminon the repository will need to update some rulesets:prevent_updatesSet
stableas an excluded branch
mainDisable the
Require Linear HistorysettingSet the only allowed merge method as
merge(removesquash)
The developer should open a PR directly in the MetOffice repository by going to the Pull Requests tab and selecting the New Pull Request button. Target the
stablebranch.
The reviewer will then review and commit the PR. When committing the branch, ensure that the merge method is
merge. This should be the default for thestablebranch as we want to keep the history ofmainin thestablebranch.If there have been any changes to the CONTRIBUTORS file during the release, the CLA Check action will fail in this PR. It is not a required status check when merging to
stableso it can be safely ignored.The developer will then create another new PR as above, to merge the
stablebranch intomain.
The reviewer can now
mergethe second PR.The admin must now revert the 2 settings above in
mainand remove the exception forstablein theprevent updatesruleset from earlier.Tag the release.
Hotfix Release#
This section describes the process of applying a hotfix to the most recent release. This section is relevant for all repositories with a stable and main branch setup. The hotfix process will be completed by 2 people with commit privilege to the relevant repository. One will have developed the hotfix branch and the other will review it (developer and reviewer below).
Before starting, an
adminon the repository will need to update some rulesets:prevent_updatesSet
stableas an excluded branch
stableSet the only allowed merge method as
squash(removemain)
mainDisable the
Require Linear HistorysettingSet the only allowed merge method as
merge(removesquash)Disable the
Require branches to be up to date before mergingsetting (if commits have been pushed tomainsince the release, this would requirestableto be updated with those, which isn’t desired).
The developer will make the hotfix change, making sure the branch has been created from
stable. Open a PR for this change targettingstableand get it reviewed and committed. The reviewer shouldsquashthis change intostable.The developer will then create another new PR, to merge the
stablebranch intomain.
The reviewer can now
mergethe second PR.The admin must now revert the ruleset changes made above.
Tag the hotfix.
Pre-Release#
UM Test Release#
Dependencies
The point of the test release is to test the release system/process works
before we have to do it for real. Typically aim for 1-2 weeks before release
day. However, before a test release can be done, all changes to fcm-make
config files, major rose-stem changes (things like basic upgrade macro or KGO
updates don’t necessarily need to be included) and modifications to the
release_new_version.py script need to be on main, so this will cause some
variation as to when the test release is done from release to release.
Partner Testing#
Dependencies
All source code changes must be on main along with any rose-stem changes that
affect multiple sites before partner testing can start. Ideally the test
release will also have been completed.
Software Stack#
Dependencies Any potential changes to platform software stacks
Release Notes#
Dependencies These should be prepared just before the release, ready to be included with each release.
Main Release#
Shumlib Release#
Dependencies All shumlib PRs
Mule Release#
Dependencies All mule PRs, Shumlib release (if required), UM release (to actually install)
Tag Other Repositories#
Dependencies All PRs for each repository.
Jules Release#
Dependencies Partner Testing, All Jules PRs committed
UM Main Release#
Dependencies All UM PRs, Test Release, Partner Testing, Jules Release
LFRic Apps Release#
Dependencies All LFRic PRs (Apps + Core), Jules Release
Post Release Tasks#
Updating Standard Suites#
Dependencies UM + Apps Releases
Stash Browser#
Dependencies UM Release
UMDP Release#
Dependencies UM Release, Standard Suites Upgrade
Milestones and Projects#
Dependencies All Releases
Standard Jobs and Wiki Pages#
Dependencies UM + Apps Releases