mirror of
				https://github.com/django/django.git
				synced 2025-10-30 23:47:49 +03:00 
			
		
		
		
	Various tweaks and additions to 'how to release Django' document.
This commit is contained in:
		
							parent
							
								
									22d82a7742
								
							
						
					
					
						commit
						f480b39525
					
				|  | @ -36,7 +36,7 @@ differences noted. The short version is: | |||
| 
 | ||||
| #. Update version numbers and create the release package(s)! | ||||
| 
 | ||||
| #. Upload the package(s) to the the ``djangoproject.com`` server and creating | ||||
| #. Upload the package(s) to the the ``djangoproject.com`` server and create | ||||
|    some redirects for download/checksum links. | ||||
| 
 | ||||
| #. Unless this is a pre-release, add the new version(s) to PyPI. | ||||
|  | @ -47,7 +47,7 @@ differences noted. The short version is: | |||
| 
 | ||||
| #. Update version numbers post-release. | ||||
| 
 | ||||
| There's a lot of details, so please read on. | ||||
| There are a lot of details, so please read on. | ||||
| 
 | ||||
| Prerequisites | ||||
| ============= | ||||
|  | @ -116,7 +116,7 @@ before release: | |||
|    __ https://github.com/django/djangoproject.com/commit/772edbc6ac5a2b8e718606b3338f2bcc429fb9b6 | ||||
| 
 | ||||
| #. Write the announcement blog post for the release. You can enter it into | ||||
|    the admin at any time and mark it as inactive. Here's a few examples: | ||||
|    the admin at any time and mark it as inactive. Here are a few examples: | ||||
|    `example security release announcement`__, `example regular release | ||||
|    announcement`__, `example pre-release announcement`__. | ||||
| 
 | ||||
|  | @ -135,19 +135,28 @@ Actually rolling the release | |||
| 
 | ||||
| OK, this is the fun part, where we actually push out a release! | ||||
| 
 | ||||
| #. Check Jenkins is green for the version(s) you're putting out. You probably | ||||
|    shouldn't issue a release until it's green. | ||||
| #. Check `Jenkins`__ is green for the version(s) you're putting out. You | ||||
|    probably shouldn't issue a release until it's green. | ||||
| 
 | ||||
|    __ http://ci.djangoproject.com | ||||
| 
 | ||||
| #. A release always begins from a release branch, so you should ``git checkout | ||||
|    stable/<release>`` (e.g. checkout ``stable/1.5.x`` to issue a release in the | ||||
|    1.5 series) and then ``git pull`` to make sure you're up-to-date. | ||||
| 
 | ||||
| #. A release always begins from a release branch, so you | ||||
|    should ``git pull`` to make sure you're up-to-date and then | ||||
|    ``git checkout stable/<release>`` (e.g. checkout ``stable/1.5.x`` to issue | ||||
|    a release in the 1.5 series.) | ||||
| 
 | ||||
| #. If this is a security release, merge the appropriate patches from | ||||
|    ``django-private``. *FIXME: actual commands here - make sure to --ff- | ||||
|    only right?*. Make sure the commit messages explain that the commit | ||||
|    is a security fix and that an announcement will follow (`example | ||||
|    security commit`__) | ||||
|    ``django-private``. Rebase these patches as necessary to make each one a | ||||
|    simple commit on the release branch rather than a merge commit. To ensure | ||||
|    this, merge them with the ``--ff-only`` flag; for example, ``git checkout | ||||
|    stable/1.5.x; git merge --ff-only security/1.5.x``, if ``security/1.5.x`` is | ||||
|    a branch in the ``django-private`` repo containing the necessary security | ||||
|    patches for the next release in the 1.5 series. If git refuses to merge with | ||||
|    ``--ff-only``, switch to the security-patch branch and rebase it on the | ||||
|    branch you are about to merge it into (``git checkout security/1.5.x; git | ||||
|    rebase stable/1.5.x``) and then switch back and do the merge. Make sure the | ||||
|    commit message for each security fix explains that the commit is a security | ||||
|    fix and that an announcement will follow (`example security commit`__) | ||||
| 
 | ||||
|    __ https://github.com/django/django/commit/3ef4bbf495cc6c061789132e3d50a8231a89406b | ||||
| 
 | ||||
|  | @ -166,7 +175,7 @@ OK, this is the fun part, where we actually push out a release! | |||
|    classifier in ``setup.py`` to reflect this. Otherwise, make sure the | ||||
|    classifier is set to ``Development Status :: 5 - Production/Stable``. | ||||
| 
 | ||||
| #. Tag the release by running ``git tag`` *FIXME actual commands*. | ||||
| #. Tag the release by running ``git tag -s`` *FIXME actual commands*. | ||||
| 
 | ||||
| #. ``git push`` your work. | ||||
| 
 | ||||
|  | @ -207,7 +216,7 @@ Now you're ready to actually put the release out there. To do this: | |||
|    ``/home/www/djangoproject.com/src/media/pgp``. | ||||
| 
 | ||||
| #. Test that the release packages install correctly using ``easy_install`` | ||||
|    and ``pip``. Here's how I do it (which requires `virtualenvwrapper`__): | ||||
|    and ``pip``. Here's one method (which requires `virtualenvwrapper`__):: | ||||
| 
 | ||||
|         $ mktmpenv | ||||
|         $ easy_install https://www.djangoproject.com/download/<version>/tarball/ | ||||
|  | @ -217,20 +226,24 @@ Now you're ready to actually put the release out there. To do this: | |||
|         $ deactivate | ||||
| 
 | ||||
|    This just tests that the tarballs are available (i.e. redirects are up) and | ||||
|    that they install correctly, but it'll catch silly mistakes. *XXX FIXME: | ||||
|    that they install correctly, but it'll catch silly mistakes. *FIXME: | ||||
|    buildout too?* | ||||
| 
 | ||||
|    __ https://pypi.python.org/pypi/virtualenvwrapper | ||||
| 
 | ||||
| #. Ask a few people on IRC to verify the checksums by visiting the chucksums | ||||
| #. Ask a few people on IRC to verify the checksums by visiting the checksums | ||||
|    file (e.g. https://www.djangoproject.com/m/pgp/Django-1.5b1.checksum.txt) | ||||
|    and following the instructions in it. | ||||
|    and following the instructions in it. For bonus points, they can also unpack | ||||
|    the downloaded release tarball and verify that its contents appear to be | ||||
|    correct (proper version numbers, no stray ``.pyc`` or other undesirable | ||||
|    files). | ||||
| 
 | ||||
| #. If this is a security or regular release, register the new package with | ||||
|    PyPI by uploading the ``PGK-INFO`` file generated in the release package. | ||||
|    This file's *in* the distribution tarball, so you'll need to pull it | ||||
|    out. ``tar xzf dist/Django-<version>.tar.gz Django-<version>/PKG-INFO`` | ||||
|    ought to work. | ||||
| #. If this is a security or regular release, register the new package with PyPI | ||||
|    by uploading the ``PGK-INFO`` file generated in the release package.  This | ||||
|    file's *in* the distribution tarball, so you'll need to pull it out. ``tar | ||||
|    xzf dist/Django-<version>.tar.gz Django-<version>/PKG-INFO`` ought to | ||||
|    work. *FIXME: Is there any reason to pull this file out manually rather than | ||||
|    using "python setup.py register"?* | ||||
| 
 | ||||
| #. Deploy the template changes you made a while back by running `fab deploy` | ||||
|    from the ``djangoproject.com`` repo. | ||||
|  | @ -240,7 +253,7 @@ Now you're ready to actually put the release out there. To do this: | |||
|    to that page listing the preview package; otherwise, just update | ||||
|    the "Get the latest official version" section. | ||||
| 
 | ||||
| #. Make up the blog post announcing the release live. | ||||
| #. Make the blog post announcing the release live. | ||||
| 
 | ||||
| #. Post the release announcement to the django-announce, | ||||
|    django-developers and django-users mailing lists. This should | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user