-
Notifications
You must be signed in to change notification settings - Fork 187
Release checklist
Jean-Noël Grad edited this page May 22, 2024
·
3 revisions
Create the release candidate:
- Create a new branch in a fork of the espressomd/espresso repository
- Cherry-pick commits with
git cherry-pick <commit>
and pull requests withgit cherry-pick -m 1 <branch>
- Open a draft PR of the release candidate against the python branch (major or minor release) or against the corresponding minor branch (bugfix release)
- Update CI containers to recent version of libs and distributions
- There should be CI for a current and a previous or LTS release
- Still older distribution releases can be removed from CI
- There should be containers for the current and previous CUDA version
- Check Python modules version in
/requirements.txt
- Check CMake version in
/CMakeLists.txt
- Check contributors in
/AUTHORS
- Relevant script:
/maintainer/find_potentially_missing_authors.sh
- The result has to be checked manually, since some people commit using different names/addresses
- With a mailmap, you can simply do
git shortlog -se 4.1.2..4.1.3rc
- Update names of core developers if applicable
- Relevant script:
- Update
/NEWS
file to include release notes for current release - Spell and grammar check comments and docs
- Relevant thread: #2216
- Check and fix copyright headers
- Update existing headers to include copyright for current year:
/maintainer/update_header.sh
- Header template for new headers:
/maintainer/header_template.txt
- Add headers to files that don't have one:
/maintainer/add_missing_headers.sh
- Relevant threads: #2198, #1421
- Update existing headers to include copyright for current year:
- Run CI jobs that are set to manual
- Push the release
- Fetch the release candidate
- Update version number from
X.Y-dev
toX.Y.Z
in/CMakeLists.txt
- Push to the relevant branch
- In the CI of that branch, run all jobs
- Workflow:
- Major release: push to new branch "X.0"
git checkout -b 4.0 4.0rc vi CMakeLists.txt vi src/config/version.hpp.in git add CMakeLists.txt src/config/version.hpp.in git commit -S -m 'Update version number to 4.0' git verify-commit HEAD git push upstream 4.0
- Minor release: push to new branch "X.Y"
git checkout -b 4.1 4.1rc vi CMakeLists.txt vi src/config/version.hpp.in git add CMakeLists.txt src/config/version.hpp.in git commit -S -m 'Update version number to 4.1' git verify-commit HEAD git push upstream 4.1
- Bugfix release: push to old branch "X.Y"
git checkout 4.1.2rc vi CMakeLists.txt git add CMakeLists.txt git commit -S -m 'Update version number to 4.1.2' git verify-commit HEAD git fetch upstream 4.1 git push upstream 4.1.2rc:4.1
- Major release: push to new branch "X.0"
- Relevant thread: #2585
- Make tarball
- Create tarball
release="4.1.2" tarball="espresso-${release}.tar.gz" # fetch the bash script cd /work/jgrad/git mkdir git-archive-all git clone https://github.com/meitar/git-archive-all.sh.git git-archive-all # tar the release branch cd /work/jgrad/git/espresso-fork git fetch upstream ${release} git checkout ${release} bash ../git-archive-all/git-archive-all.sh --format tar.gz --prefix "espresso/" ${tarball}
- Manually unpack tarball, configure with maxset and test installation + documentation
tar xfz ${tarball} cd espresso mkdir build cd build cp ../maintainer/configs/maxset.hpp myconfig.hpp rm -rf /tmp/espresso-unit-tests cmake .. -D ESPRESSO_BUILD_WITH_CUDA=ON -D ESPRESSO_BUILD_WITH_HDF5=ON \ -D ESPRESSO_BUILD_WITH_STOKESIAN_DYNAMICS=ON -D ESPRESSO_BUILD_WITH_SCAFACOS=ON \ -D CMAKE_INSTALL_PREFIX=/tmp/espresso-unit-tests -D ESPRESSO_CTEST_ARGS=-j$(nproc) make -j $(nproc) make -j $(nproc) check_unit_tests make -j $(nproc) check_python make -j $(nproc) check_tutorials make -j $(nproc) check_samples make -j $(nproc) check_benchmarks make check_cmake_install make doxygen make -j $(nproc) sphinx user_guide_html=$(realpath doc/sphinx/html) echo -e '\n\nraise ImportError("")' >> src/python/espressomd/visualization.py make -j 3 tutorials_html cd doc/tutorials mkdir html python3 ../../../maintainer/CI/deploy_tutorials.py rsync -a --files-from=deploy_list.txt ./ html jupyter_html=$(realpath html) make -j $(nproc) check_utils
- Sign tarball
gpg --output ${tarball}.sig --detach-sig ${tarball} gpg --verify ${tarball}.sig ${tarball}
- Create tarball
- Tag release and upload tarball+signature using Draft a new release
- Deploy static documentation to the website
- In a local fork of espressomd/espressomd.github.io, do:
git checkout landing_page sed -i -r "s/latest_release: [0-9\.]+/latest_release: ${release}/" metadata.yml git add metadata.yml git commit -m "Update to release ${release}" cp -r ${user_guide_html} doc${release} cp -r ${jupyter_html} tutorials${release} rm doc${release}/.buildinfo echo -e '\n/* hide todo notes */\ndiv.admonition-todo {\n display: none;\n}' >> doc${release}/_static/custom.css python3 tutorials.py mv tutorials.md tutorials${release}.md git checkout releases git add doc${release} tutorials${release}.md tutorials${release} git commit -m "Add ${release} user guide and tutorials" git push origin releases:releases git push origin landing_page:landing_page
- In a local fork of espressomd/espressomd.github.io, do:
- Close the corresponding milestone (milestones)
- Update website using the CMS
- in https://espressomd.org/wordpress/documentation
- Update the latest release documentation
- Update list of tutorials if anything changed
- in https://espressomd.org/wordpress/download
- Update the latest release download (tarball link, release notes and git clone command)
- in https://espressomd.org/wordpress
- Add release news post
- Remove release posts of older versions
- in https://espressomd.org/wordpress/documentation
- Post release notes to the users mailing list (espressomd-users@nongnu.org)
- Update the python branch
- Port improvements from the release into the python branch: release notes, grammar/spell checking, new authors, etc.
- Update version number from
X.Y-dev
toX.Y+1-dev
in/CMakeLists.txt
andX.Y+1
in/src/config/version.hpp.in