Testing directions for making a release
Have three shells open: one on Chrysalis, one on Compy, and one on Perlmutter. Do the following steps on each machine.
If running on Perlmutter, it is preferable to run from
$CSCRATCHrather than/global/homes. Running from the latter may result in a ‘Resource temporarily unavailable’ error.If running on Compy, it is necessary to run
test_globus.pyfrom a sub-directory of/compyfsrather than/qfs.
cdto thezstashdirectory.Check out a branch to test on.
test dev (run before making a new zstash RC)
git fetch upstream main git checkout -b test_pre_zstash_rc<#> upstream/main git log # check the commits match https://github.com/E3SM-Project/zstash/commits/main
test new Unified RC
git fetch upstream main git checkout -b test_unified_rc<#>_<machine_name> upstream/main git log # check the commits match https://github.com/E3SM-Project/zstash/commits/main
test final Unified
git fetch upstream main git checkout -b test_unified_<#>_<machine_name> upstream/main git log # check the commits match https://github.com/E3SM-Project/zstash/commits/main
Set up your environment.
test dev (run before making a new zstash RC): Set up a new development environment. This ensures that testing will use the latest conda changes. Note that you will need to run
conda remove -n zstash_dev_pre_rc<#> --allfirst if you have previously done this step.mamba clean --all mamba env create -f conda/dev.yml -n zstash_dev_pre_rc<#> conda activate zstash_dev_pre_rc<#> pip install .
test new Unified RC: Launch the E3SM Unified environment for the machine you’re on. Change out the version numbers below.
* Chrysalis: ``source /lcrc/soft/climate/e3sm-unified/test_e3sm_unified_1.9.0rc16_chrysalis.sh`` * Compy: ``source /share/apps/E3SM/conda_envs/test_e3sm_unified_1.9.0rc16_compy.sh`` * Perlmutter: ``source /global/common/software/e3sm/anaconda_envs/test_e3sm_unified_1.9.0rc16_pm-cpu.sh``
test final Unified
* Chrysalis: ``source /lcrc/soft/climate/e3sm-unified/load_latest_e3sm_unified_chrysalis.sh`` * Compy: ``source /share/apps/E3SM/conda_envs/load_latest_e3sm_unified_compy.sh`` * Perlmutter: ``source /global/common/software/e3sm/anaconda_envs/load_latest_e3sm_unified_pm-cpu.sh``
Activate Globus. Go to https://www.globus.org/. Log in with your NERSC credentials. Activate the following Globus endpoints using the corresponding credentials:
Run the unit tests with
python -m unittest tests/test_*.py.test dev (run before making a new zstash RC):
If there are any failures, fix the code (or tests). If you make any conda changes, go back to step 4a. If you otherwise change zstash source code, run
pip install .and then redo step 6. If you only make changes to tests, you can immediately redo step 6.
test new Unified RC:
If there are any failures, fix the code and go back to step 1, following the (a: test dev (run before making a new zstash RC)) directions.
test final Unified:
There should be no failures. If there are, a patch release of E3SM Unified may be required.
For a, b, and c:
If there are no failures, proceed to the next step.
Run
git diff. You should not have any changes. If you do, you have probably made code changes to get the tests to pass. Make a pull request to merge the changes. Add the “semver: bug” label.Wrap up release testing:
test dev (run before making a new zstash RC): Create the next zstash RC by following the “release candidates” directions at https://e3sm-project.github.io/zstash/_build/html/main/dev_guide/release.html.
test new Unified RC: Create the next zstash RC by following the “production releases” directions at https://e3sm-project.github.io/zstash/_build/html/main/dev_guide/release.html.
test final Unified: You can now safely remove old branches and environments. At https://github.com/E3SM-Project/zstash/branches, delete any branches that are no longer needed. Also, run:
# Branches $ cd <zstash directory> $ git branch # Look at all branch names $ git branch -D <list branches you want to delete> # Environments $ conda env list # For each environment you want to delete, run: $ conda remove -n <environment_name> --all