mopidy/docs/releasing.rst

156 lines
4.3 KiB
ReStructuredText

******************
Release procedures
******************
Here we try to keep an up to date record of how Mopidy releases are made. This
documentation serves both as a checklist, to reduce the project's dependency on
key individuals, and as a stepping stone to more automation.
.. _creating-releases:
Creating releases
=================
#. Update changelog and commit it.
#. Bump the version number in ``mopidy/__init__.py``. Remember to update the
test case in ``tests/test_version.py``.
#. Merge the release branch (``develop`` in the example) into master::
git checkout master
git merge --no-ff -m "Release v0.16.0" develop
#. Install/upgrade tools used for packaging::
pip install -U twine wheel
#. Build package and test it manually in a new virtualenv. The following
assumes the use of virtualenvwrapper::
python setup.py sdist bdist_wheel
mktmpenv
pip install path/to/dist/Mopidy-0.16.0.tar.gz
toggleglobalsitepackages
# do manual test
deactivate
mktmpenv
pip install path/to/dist/Mopidy-0.16.0-py27-none-any.whl
toggleglobalsitepackages
# do manual test
deactivate
#. Tag the release::
git tag -a -m "Release v0.16.0" v0.16.0
#. Push to GitHub::
git push --follow-tags
#. Upload the previously built and tested sdist and bdist_wheel packages to
PyPI::
twine upload dist/Mopidy-0.16.0*
#. Merge ``master`` back into ``develop`` and push the branch to GitHub.
#. Make sure the new tag is built by Read the Docs, and that the ``latest``
version shows the newly released version.
#. Spread the word through the topic on #mopidy on IRC, @mopidy on Twitter, and
on the mailing list.
#. Update the Debian package.
Updating Debian packages
========================
This howto is not intended to learn you all the details, just to give someone
already familiar with Debian packaging an overview of how Mopidy's Debian
packages is maintained.
#. Install the basic packaging tools::
sudo apt-get install build-essential git-buildpackage
#. Create a Wheezy pbuilder env if running on Ubuntu and this the first time.
See :issue:`561` for details about why this is needed::
DIST=wheezy sudo git-pbuilder update --mirror=http://mirror.rackspace.com/debian/ --debootstrapopts --keyring=/usr/share/keyrings/debian-archive-keyring.gpg
#. Check out the ``debian`` branch of the repo::
git checkout -t origin/debian
git pull
#. Merge the latest release tag into the ``debian`` branch::
git merge v0.16.0
#. Update the ``debian/changelog`` with a "New upstream release" entry::
dch -v 0.16.0-0mopidy1
git add debian/changelog
git commit -m "debian: New upstream release"
#. Check if any dependencies in ``debian/control`` or similar needs updating.
#. Install any Build-Deps listed in ``debian/control``.
#. Build the package and fix any issues repeatedly until the build succeeds and
the Lintian check at the end of the build is satisfactory::
git buildpackage -uc -us
If you are using the pbuilder make sure this command is::
sudo git buildpackage -uc -us --git-ignore-new --git-pbuilder --git-dist=wheezy --git-no-pbuilder-autoconf
#. Install and test newly built package::
sudo debi
Again for pbuilder use::
sudo debi --debs-dir /var/cache/pbuilder/result/
#. If everything is OK, build the package a final time to tag the package
version::
git buildpackage -uc -us --git-tag
Pbuilder::
sudo git buildpackage -uc -us --git-ignore-new --git-pbuilder --git-dist=wheezy --git-no-pbuilder-autoconf --git-tag
#. Push the changes you've done to the ``debian`` branch and the new tag::
git push
git push --tags
#. If you're building for multiple architectures, checkout the ``debian``
branch on the other builders and run::
git buildpackage -uc -us
Modify as above to use the pbuilder as needed.
#. Copy files to the APT server. Make sure to select the correct part of the
repo, e.g. main, contrib, or non-free::
scp ../mopidy*_0.16* bonobo.mopidy.com:/srv/apt.mopidy.com/app/incoming/stable/main
#. Update the APT repo::
ssh bonobo.mopidy.com
/srv/apt.mopidy.com/app/update.sh
#. Test installation from apt.mopidy.com::
sudo apt-get update
sudo apt-get dist-upgrade