Publishing the Final Releaseο
Once all dependencies have been tested and validated, and the E3SM-Unified release candidate (RC) has passed testing across the relevant HPC systems, the final release can be published. This page outlines the process of finalizing and distributing an official E3SM-Unified release.
β Pre-Release Checklistο
Before publishing:
[ ] All RC versions of dependencies (e.g.,
e3sm_diags
,zppy
,mache
) have been released with final version tags and conda-forge packages[ ] Final version of
e3sm-unified
has been created and built on conda-forge[ ] Final deployments have been completed on all target HPC machines
[ ] Smoke testing and key workflows (e.g.,
zppy
,mpas_analysis
) have been validated
Step-by-Step Finalizationο
1. Remove RC Labelsο
Edit recipes/e3sm-unified/meta.yaml
and:
Replace RC versions of dependencies (e.g.,
3.0.0rc2
) with final versions (e.g.,3.0.0
) in bothmeta.yaml
anddefault.cfg
Bump the
e3sm-unified
version accordingly (e.g., from1.12.0rc3
to1.12.0
) inmeta.yaml
ande3sm_supported_machines/shared.py
Commit the changes to your update-to-<version>
branch.
2. Tag Final Release in Source Repoο
If you followed the suggested workflow under
Creating an RC for E3SM-Unified, you should
have a draft PR from your update-to-<version>
branch that documents the
changes. Merge this PR into main
so the release history and testing context
are preserved.
Then, go to Releases
on the right on the
main page of the repo and
click Draft a new release
at the top.
Document the changes in this version (hopefully just copy-paste from the description of your recently merged PR), similar to this example.
3. Submit Final Feedstock PRο
Go to the e3sm-unified-feedstock:
Open a pull request from your fork
Update the version number and
sha256
hash.Target the
main
branch (notdev
)Ensure final versions of all dependencies are listed
Once CI passes, merge the PR.
This will trigger CI to publish the new release to the standard conda-forge channel. You typically need to wait as long as an hour after packages have built for them to become available for installation. You can watch this page to see when files appear and how many downloads they have. Once all files have been built and show 2 or more downloads, you should be good to proceed with final deployment.
4. Deploy Final Release on HPC Systemsο
Use the same process as during RC testing, but now with the --release
flag:
./deploy_e3sm_unified.py --conda ~/miniforge3 --release
This creates new activation scripts like:
load_e3sm_unified_<version>_<machine>.sh
Also generates symlinks like:
load_latest_e3sm_unified_<machine>.sh
5. Announce the Releaseο
Share the release:
π Confluence Like this example
Email to E3SM All-hands list (same contents as Confluence page)
π£ Slack (
#e3sm-help-postproc
) with release highlights
Be sure to include:
Final versions of core E3SM-developed packages (e.g.,
mpas_analysis
,zppy
)List of supported HPC machines and activation instructions
Summary of major changes, fixes, and new features
π Post-Release Maintenanceο
On each supported machine:
Clean up outdated
test_...
activation scriptsRemove conda and spack environments for E3SM-Unified RCs
Delete the
update-to-<version>
branchMove the contents on Confluence describing the current version to the top of the previous versions page
Copy the contents of the next version to be the new current version
Update the the version under βnext versionβ and remove all bold (to indicate that, as a starting point, no updates have been made to any packages in the next version)
Move any release notes for older E3SM-Unified versions into the Confluence subdirectory for previous versions.
β‘ Next: Maintaining Past Versions