Skip to content

Commit 0f4ef7d

Browse files
Update documentation
1 parent ef0ad98 commit 0f4ef7d

20 files changed

+256
-154
lines changed

main/.doctrees/environment.pickle

1.95 KB
Binary file not shown.
12.1 KB
Binary file not shown.
-1.23 KB
Binary file not shown.
3.83 KB
Binary file not shown.
-695 Bytes
Binary file not shown.
361 Bytes
Binary file not shown.
15 Bytes
Binary file not shown.

main/_sources/releasing/creating-rcs/rc-dependencies.md.txt

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,15 @@ E3SM-developed dependencies.
1111

1212
## Step-by-Step: Creating an RC for `e3sm_diags`
1313

14-
### 1. Tag a Release Candidate in the Source Repo
14+
### 1. Tag a Release Candidate or Make a GitHub Release
15+
16+
#### 1.1 Tag a Release Candidate in the Source Repo
17+
18+
In some repos like MPAS-Analysis, it is desirable to tag a release candidate
19+
without making a GitHub release page. This avoids clutter and confusion.
20+
21+
We will use E3SM Diags in this example even though this is not the preferred
22+
workflow for that repository.
1523

1624
Go to the source repository:
1725
[E3SM Diags GitHub](https://github.com/E3SM-Project/e3sm_diags)
@@ -36,6 +44,57 @@ git push origin v3.0.0rc1
3644

3745
---
3846

47+
#### 1.2 Perform at GitHub Release
48+
49+
In other repositories like E3SM Diags and zppy, developers prefer that you
50+
create release pages for release candidates. These pages provide clarity and
51+
provenance for the release candidate just like for a normal release.
52+
53+
Follow these steps to create a release candidate via GitHub:
54+
55+
- **Pull the latest changes on `main`:**
56+
```bash
57+
git checkout main
58+
git pull origin main
59+
```
60+
61+
- **Create a new branch from `main`:**
62+
```bash
63+
git checkout -b bump/0.1.0rc1
64+
```
65+
66+
- **Push the branch to your fork or upstream:**
67+
```bash
68+
git push --set-upstream origin bump/0.1.0rc1
69+
```
70+
71+
- **Bump the version in the Python files:**
72+
- You can use the `tbump` tool (available in the conda development
73+
environments for `e3sm_diags` and `e3sm_to_cmip`):
74+
```bash
75+
tbump 0.1.0rc1 --no-tag
76+
```
77+
This will automatically update version strings, add, commit, and push
78+
changes to remote.
79+
- Alternatively, manually update version strings in files such as
80+
`pyproject.toml`, `setup.py`, and `<python_package>/__init__.py`. Then
81+
add, commit, and push these changes.
82+
83+
- **Open a pull request:**
84+
- Use your `bump/0.1.0rc1` branch as the source and merge into `main`.
85+
- Example: [Compare · E3SM-Project/e3sm_to_cmip](https://github.com/E3SM-Project/e3sm_to_cmip/compare)
86+
87+
- **Publish a new GitHub Release:**
88+
- Go to the [GitHub Releases page](https://github.com/E3SM-Project/e3sm_to_cmip/releases/new).
89+
- Click "Choose a tag" and enter `0.1.0rc1` (ideally without a `v`, but
90+
follow the repo’s conventions).
91+
- For "Release title", use `v0.1.0rc1` (with a `v`).
92+
- Click "Generate release notes" and organize the changelog as needed.
93+
- Check the box "Set as a pre-release".
94+
- Click "Publish release".
95+
96+
---
97+
3998
### 2. Prepare the Feedstock PR
4099

41100
Go to the conda-forge feedstock for `e3sm_diags`:
@@ -117,7 +176,7 @@ conda install -c conda-forge/label/e3sm_diags_dev e3sm_diags
117176

118177
Creating an RC for a dependency involves:
119178

120-
1. Tagging the source repository
179+
1. Tagging a Release Candidate or making a GitHub release
121180
2. Opening a PR on the feedstock targeting the `dev` branch
122181
3. Waiting for CI to pass, then merging
123182

main/_sources/releasing/creating-rcs/rc-e3sm-unified.md.txt

Lines changed: 16 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -35,63 +35,30 @@ Edit `recipes/e3sm-unified/meta.yaml`:
3535
`e3sm_diags`, `mpas-analysis`, etc.)
3636

3737
---
38+
## 3. Run `build_packages.py`
3839

39-
## 3. Regenerate the Build Matrix
40+
If you are building packages for an RC version of E3SM-Unified, the script
41+
will build packages for Python 3.10 and the `nompi` and `hpc` versions of MPI
42+
by default (those needed for login and compute nodes, respectively, on HPC).
43+
You may wish to use the `--python` and `--mpi` flags to override these.
4044

41-
Run the matrix generator script to define combinations of Python and MPI:
45+
You should supply the `--conda` flag if not using `~/miniforge3`.
4246

4347
```bash
44-
cd recipes/e3sm-unified/configs
45-
rm *.yaml
46-
python generate.py
48+
./build_packages.py --conda ~/minforge3 --python 3.10 --mpi nompi hpc
4749
```
4850

49-
This produces matrix files like:
51+
The script will produce a matrix of files like:
5052

51-
* `mpi_mpich_python3.10.yaml`
52-
* `mpi_hpc_python3.10.yaml`
53+
* `configs/mpi_nompi_python3.10.yaml`
54+
* `configs/mpi_hpc_python3.10.yaml`
5355

54-
---
55-
56-
## 4. Edit `build_package.bash`
57-
58-
Update the channel list to include dev labels for any packages still in RC
59-
form. For example:
60-
61-
```bash
62-
channels="-c conda-forge/label/chemdyg_dev \
63-
-c conda-forge/label/e3sm_diags_dev \
64-
-c conda-forge/label/mache_dev \
65-
-c conda-forge/label/mpas_analysis_dev \
66-
-c conda-forge/label/zppy_dev \
67-
-c conda-forge/label/zstash_dev \
68-
-c conda-forge"
69-
```
70-
71-
Then define which matrix files to test. For example:
72-
73-
```bash
74-
for file in configs/mpi_mpich_python3.10.yaml configs/mpi_hpc_python3.10.yaml
75-
do
76-
conda build -m $file --override-channels $channels .
77-
done
78-
```
79-
80-
Make sure:
81-
82-
* You use `--override-channels` to isolate testing to dev packages
83-
* You only include dev labels for packages with RCs — use stable versions
84-
otherwise
56+
These are then used by `conda build` to build the appropriate variant of
57+
the conda package.
8558

8659
---
8760

88-
## 5. Build and Troubleshoot
89-
90-
Run the script:
91-
92-
```bash
93-
bash build_package.bash
94-
```
61+
## 4. Troubleshoot
9562

9663
If builds fail, consult the
9764
[Troubleshooting Conda Build Failures](rc-troubleshooting.md) guide.
@@ -100,7 +67,7 @@ resolution issues.
10067

10168
---
10269

103-
## 6. Make a draft PR
70+
## 5. Make a draft PR
10471

10572
Push the branch to your fork of `e3sm-unified` and make a draft PR to the
10673
main `e3sm-unified` repo. Use that PR to document progress and highlight
@@ -110,7 +77,7 @@ acces to E3SM's Confluence pages). See
11077

11178
---
11279

113-
## 7. Keeping updated on Confluence
80+
## 6. Keeping updated on Confluence
11481

11582
As deployment and testing progresses, you needs to make sure that the packages
11683
in your `update-to-<version>` branch match the
@@ -127,7 +94,7 @@ jargon**) what is new in their package that would be of interest to users.
12794

12895
---
12996

130-
## 8. Tag and Publish the RC
97+
## 7. Tag and Publish the RC
13198

13299
After test builds are successful:
133100

main/_sources/releasing/planning-updates.md.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,25 @@ using the [Creating Release Candidates](creating-rcs/overview.md) workflow.
7373

7474
---
7575

76+
## ✍️ Updating `meta.yaml`
77+
78+
Once the package list and versions are finalized, update the
79+
[`recipes/e3sm-unified/meta.yaml`](https://github.com/E3SM-Project/e3sm-unified/blob/main/recipes/e3sm-unified/meta.yaml)
80+
file to reflect the new selections. This file is the authoritative source for
81+
the conda environment and must be kept in sync with the planned versions.
82+
83+
- Edit the `meta.yaml` to add new packages, update versions, or remove
84+
deprecated packages as needed.
85+
- Ensure that all changes are consistent with the decisions made during
86+
planning.
87+
- Commit these changes to your release branch as part of preparing the
88+
release candidate.
89+
90+
> **Tip:** Also update `e3sm_supported_machines/default.cfg` to match, unless
91+
there is a technical reason to diverge.
92+
93+
---
94+
7695
## 📦 Managing Version Pins During Conda-Forge Migrations
7796

7897
E3SM-Unified often needs to coordinate with conda-forge's centralized version

0 commit comments

Comments
 (0)