Skip to content

Latest commit

 

History

History
128 lines (96 loc) · 3.19 KB

RELEASE.md

File metadata and controls

128 lines (96 loc) · 3.19 KB

Releasing a New ACME Version

The instructions collected here are intended to help with preparing a new ACME release. This file is mainly intended for internal use, for a detailed guide on how to contribute to ACME, please see our Contributing Guide

Prerequisites

  1. On your development machine, set up a new conda environment with the most recent Python version intended to be supported

    conda create -n acme-py11 python=3.11
  2. Update dependencies: open setup.cfg and install the most recent versions (not necessarily those stated) of all listed dependencies

    conda install dask "dask-jobqueue>=0.8" h5py numpy "tqdm>=4.31" pytest-cov ipdb ipython mypy "scipy>= 1.5,<2.0" tox
  3. Run the test-suite locally

    cd /path/to/acme-repo/acme/tests
    ./run_tests.sh pytest
  4. Update testing environment in tox.ini and run tox locally (IMPORTANT this also tests if ACME can be installed via pip!)

    cd /path/to/acme-repo
    tox
  5. Run mypy static type checker locally

    cd /path/to/acme-repo
    mypy acme --allow-redefinition
  6. Export your environment and re-recreate it on an x86 ESI HPC cluster node:

    conda env export --from-history > acmepy11.yml
    scp acmepy11.yml esi-svhpc2:~/
    ssh esi-svhpc2
    module load conda
    conda env create --file acmepy11.yml

    Create an identical environment (append "-ppc" to its name) on a ppc64le node:

    ssh hub
    module load conda
    conda env create --file acmepy11.yml
  7. Run ACME's test-suite on both architectures

    ssh {hub,esi-svhpc2}
    module load conda
    conda activate acme-py11{-ppc}
    cd /path/to/acme-repo/acme/tests
    ./run_tests.sh pytest

If all tests are passing, merge changes into [dev] branch.

Deployment

Ensure you're working in [dev], not [main]!

  1. Update dependencies/supported Python version in setup.cfg

  2. Update build-system requirements in pyproject.toml

  3. Bump version number in setup.py

  4. Prepare release notes in CHANGELOG.md

  5. Force-update environment file acme.yml as well as citation resource CITATION.cff:

    python setup.py --version
  6. Check proper licensing of all files (errors in setup.py and CITATION.cff can be ignored)

    reuse lint
  7. Create a release tag

    git tag -a "202x.y" -m "202x.y"
    git push --tags

Finally, open a PR into [main]. Once merged, wait for the CI pipeline to finish and click the play button to publish to PyPi.

Post-Release Cleanup

  1. Checkout [dev] branch

  2. Prepare next [Unreleased] section with pre-defined headings in CHANGELOG.md for next release:

    ## [Unreleased]
    ### NEW
    ### CHANGED
    ### REMOVED
    ### DEPRECATED
    ### FIXED