Creating RCs for Dependency Packages
This page describes how to create release candidates (RCs) for packages that
are included in the E3SM-Unified environment, such as e3sm_diags
,
mpas-analysis
, zppy
, and zstash
.
We use e3sm_diags
as a concrete example, but the process is similar for all
E3SM-developed dependencies.
Step-by-Step: Creating an RC for e3sm_diags
1. Tag a Release Candidate in the Source Repo
Go to the source repository: E3SM Diags GitHub
Create a release tag:
git checkout main
git fetch --all -p
git reset --hard origin/main
git tag v3.0.0rc1
git push origin v3.0.0rc1
Note:
e3sm_diags
uses av
prefix in version tags (e.g.,v3.0.0rc1
) as part of its established convention.For new packages, it’s recommended to follow Semantic Versioning and omit the
v
prefix (i.e., tag as3.0.0rc1
).
2. Prepare the Feedstock PR
Go to the conda-forge feedstock for e3sm_diags
:
E3SM Diags Feedstock
If a dev
branch does not already exist:
Clone the feedstock repo locally
Create a new branch off
main
calleddev
Push it to the origin
Note: By making no changes from the
main
branch, you ensure that no new packages will be created when you push thedev
branch to the origin
3. Fork the Feedstock and Create a PR
Fork the feedstock repo to your GitHub account.
In your fork, create a new branch (e.g.,
update-v3.0.0rc1
).Important: Do not create branches directly on the main conda-forge feedstock. All changes should go through a pull request from your personal fork. Creating a branch on the main feedstock can trigger package builds before your updates have been properly tested or reviewed. (e.g.,
update-v3.0.0rc1
).Edit
recipe/meta.yaml
:
Update the
version
field to match your RC tag (e.g.,v3.0.0rc1
)Set the
sha256
hash. To determine the hash, you need to download the source file on a Linux (e.g. HPC) machine and runsha256sum
on it. For some reason, Macs seem to produce an incorrect hash.Update dependencies if needed (e.g., pin to RC versions of other tools)
If you created the
dev
branch above and no previous release candidates have been added, you will need to addrecipe/conda_build_config.yaml
with contents like:channel_targets: - conda-forge e3sm_diags_dev
The label is the name of the package with any
-
replaced by_
, followed by_dev
.Commit the changes and push them to the branch on your fork (unless editing on GitHub directly).
Open a pull request:
Source: your RC branch on your fork (head repository)
Target: the
dev
branch on the conda-forge feedstock (base repository)
4. Merge the PR Once CI Passes
After CI completes successfully:
Review the logs if needed
Merge the PR into the
dev
branch
The RC build will now be published to:
conda-forge/label/e3sm_diags_dev
You can test the RC by installing it like so:
conda install -c conda-forge/label/e3sm_diags_dev e3sm_diags
Summary
Creating an RC for a dependency involves:
Tagging the source repository
Opening a PR on the feedstock targeting the
dev
branchWaiting for CI to pass, then merging
This process enables E3SM-Unified maintainers to incorporate the RC version of your package into a unified test build.
➡ Next: Creating an RC for E3SM-Unified