Release Tasks¶
A few notes on what to do during a release.
Things to check before a release¶
synchronize module documentation (dry run):
$ python3 tools/sync_module_docs.py doc/src/ . -n
regenerate gallery page and examples:
$ rm -rf doc/examples/ $ python3 tools/gen_gallery.py
create temporary/testing tarball:
$ python3 setup.py sdist
check in-place build:
$ # unpack the tarball $ # cd into $ python3 setup.py build_ext --inplace $ python3 sfepy/scripts/test_install.py
check that documentation can be built:
$ # copy site_cfg.py $ python3 setup.py htmldocs $ firefox doc/_build/html/index.html
or use:
$ cd doc/ $ make html $ firefox _build/html/index.html
try also:
$ python3 setup.py pdfdocs
check installed build:
$ python3 -m pip install . --user $ cd $ sfepy-test
then remove the installed files so that they do not interfere with the local build
create final tarball
update doc/release_notes.rst, with the help of:
$ python3 tools/gen_release_notes.py 2019.2
update doc/news.rst, doc/archived_news.rst
change version number (sfepy/version.py) so that previous release tarball is not overwritten!
set
is_release = True
in site_cfg.pyupdate pdfdocs:
$ python3 setup.py pdfdocs
create tarball:
$ python3 setup.py sdist
tag the release using:
$ git tag release_XXXX.X
Useful Git commands¶
log
git log --pretty=format:"%s%n%b%n" --topo-order --reverse release_2016.4..HEAD
who has contributed since <date>:
git log --after=<date> | grep Author | sort | uniq git log release_2012.1..HEAD | grep Author | sort -k3 | uniq git shortlog -s -n release_2012.3..HEAD git rev-list --committer="Name Surname" --since=6.months.ago HEAD | wc git rev-list --author="Name Surname" --since=6.months.ago HEAD | wc # ?no-merges
misc:
git archive --format=tar HEAD | gzip > name.tar.gz
Web update and file uploading¶
upload the sources to TestPyPI and test:
bump version number as needed when testing
upload commands:
python3 setup.py sdist # set ``is_release = True`` in site_cfg.py python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/sfepy-2022.3[.-]*
testing:
python3 -m venv venv source venv/bin/activate python3 -m pip install -U --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ sfepy python3 -m pip install pytest python3 -c "import sfepy; sfepy.test('-v', '--durations=0')" deactivate # rm -rf venv
upload the sources to PyPI and test:
upload commands:
python3 setup.py sdist # set ``is_release = True`` in site_cfg.py python3 -m twine upload dist/sfepy-2022.3[.-]*
testing:
python3 -m venv venv source venv/bin/activate python3 -m pip install -U sfepy python3 -m pip install pytest python3 -c "import sfepy; sfepy.test('-v', '--durations=0')" deactivate # rm -rf venv
make a pull request with the updated version in
sfepy-feedstock/recipe/meta.yaml
from a fork (e.g. https://github.com/rc/sfepy-feedstock) of https://github.com/conda-forge/sfepy-feedstock.publish development docs also as new release docs
send announcement to