A release can be undertaken only by a project administrator. A project administrator should have an administrator role on the libEnsemble GitHub, PyPI, and readthedocs pages.
A GitHub issue is created with a checklist for the release.
A release branch should be taken off develop (or develop pulls controlled).
Release notes for this version are added to the documentation with release date, including a list of supported (tested) platforms.
Version number is updated wherever it appears (and
+devsuffix is removed) (in
README.rstunder Citing libEnsemble is checked for correctness. (Note: The year generated in docs by
docs/conf.pyshould be automatic).
libensemble/__init__.pyare checked to ensure all information is up to date.
MANIFEST.inis checked. Locally, try out
python setup.py sdistand check created tarball. contains correct files and directories for PyPI package.
Tests are run with source to be released (this may iterate):
On-line CI (GitHub Actions) tests must pass.
Scaling tests must be run on HPC platforms listed as supported in release notes. Test variants by platform, launch mechanism, scale, and other factors can be configured and exported by the libE-Templater.
Coverage must not have decreased unless there is a justifiable reason.
Documentation must build and display correctly wherever hosted (currently readthedocs.com).
Pull request from either the develop or release branch to master requesting one or more reviewers (including at least one other administrator).
Reviewer will check that all tests have passed and will then approve merge.
An administrator will take the following steps.
Merge the pull request into master.
Once CI tests have passed on master:
If the merge was made from a release branch (instead of develop), merge this branch into develop.
Create a new commit on develop that appends
+devto the version number (wherever is appears).
Ensure all relevant GitHub issues are closed and moved to the Done column on the kanban project board (inc. the release checklist).
Email libEnsemble mailing list, and notify the everyone channel in the libEnsemble Slack workspace.