Release packaging guidelines¶
Preparing for a new release¶
Follow the steps outlined below to prep changes in your fork:
Merge any changes from
upstream/master
into your fork’smaster
branch.git fetch upstream git checkout master git merge upstream/master
From your fork’s
master
branch, create a new branch for preparing the release, e.g.:git checkout -b release-prep/2.X.X
Update
__version__
inwagtailmenus/__init__.py
to reflect the new release version.Make sure
CHANGELOG.md
is updated with details of any changes since the last release.Make sure the release notes for the new version have been created / updated in
docs/source/releases/
and are referenced indocs/source/releases/index.rst
. Be sure to remove the ‘(alpha)’ or ‘(beta)’ from the heading in the latest release notes, as well as the ‘Wagtailmenus X.X is in the alpha stage of development’ just below.If releasing a ‘final’ version, following an ‘alpha’ or ‘beta’ release, ensure the
a
orb
is removed from the file name for the release, and the reference to it indocs/source/releases/index.rst
.cd
into thedocs
directory to check documentation-related stuff:cd docs
Check for and correct any spelling errors raised by sphinx:
make spelling
Check that the docs build okay, and fix any errors raised by sphinx:
make html
Commit changes so far:
git commit -am 'Bumped version and updated release notes'
Update the source translation files by running the following from the project’s root directory:
# Update source files django-admin.py makemessages -l en # Commit the changes git commit -am 'Update source translation files'
Push all outstanding changes to GitHub:
git push
Submit your changes as a PR to the main repository via https://github.com/rkhleics/wagtailmenus/compare
Packaging and pushing to PyPi¶
When satisfied with the PR for preparing the files:
From https://github.com/rkhleics/wagtailmenus/pulls, merge the PR into the
master
branch using the “merge commit” option.Locally,
cd
to the project’s root directory, checkout themaster
branch, and ensure the local copy is up-to-date:workon wagtailmenus cd ../path-to-original-repo git checkout master git pull
Ensure dependencies are up-to-date by running:
pip install -e '.[testing,docs]' -U
Push any updated translation source files to Transifex:
tx push -s -l en
Pull down updated translations from Transifex:
tx pull --a rm -r wagtailmenus/locale/en_GB/ git add *.po
Convert the
.po
files to.mo
for each language by running:find . -name \*.po -execdir msgfmt django.po -o django.mo \;
Commit and push all changes so far:
git commit -am 'Pulled updated translations from Transifex and converted to .mo' git push
Create a new tag for the new version and push that too:
git tag -a v2.X.X git push --tags
Create a new source distribution and universal wheel for the new version
python setup.py sdist python setup.py bdist_wheel --universal
Update twine to the latest version and upload to the new distribution files to the PyPi test environment.
pip install twine --U twine upload dist/* -r pypitest
Test that the new test distribution installs okay:
mktmpenv pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple wagtailmenus deactivate
If all okay, push distribution files to the live PyPi:
twine upload dist/* -r pypi
Edit the release notes for the release from https://github.com/rkhleics/wagtailmenus/releases, by copying and pasting the content from
docs/releases/x.x.x.rst
Crack open a beer - you earned it!