blob: 37bc9b0e255005b5be1a82a451d741564a992e71 [file] [log] [blame]
Alex Stapletonc5fffd32014-03-18 15:29:00 +00001Doing a release
Alex Gaynor89063f62014-01-06 15:52:38 -08002===============
3
Paul Kehrer27bb5fe2014-07-04 11:28:08 -05004Doing a release of ``cryptography`` requires a few steps.
5
6Verifying OpenSSL version
7-------------------------
8
9The release process uses a static build for Windows wheels. Check that the
Paul Kehrer1f1e02f2014-07-06 08:52:17 -050010Windows Jenkins builders have the latest version of OpenSSL installed
11before performing the release.
Alex Gaynor89063f62014-01-06 15:52:38 -080012
13Bumping the version number
14--------------------------
15
Paul Kehrer27bb5fe2014-07-04 11:28:08 -050016The next step in doing a release is bumping the version number in the
Alex Gaynor89063f62014-01-06 15:52:38 -080017software.
18
Alex Gaynorce0b5a32014-01-06 16:53:31 -080019* Update the version number in ``cryptography/__about__.py``.
Alex Stapletona39a3192014-03-14 20:03:12 +000020* Update the version number in ``vectors/cryptography_vectors/__about__.py``.
Alex Gaynor3f230402014-01-08 09:21:57 -080021* Set the release date in the :doc:`/changelog`.
Alex Gaynor89063f62014-01-06 15:52:38 -080022* Do a commit indicating this.
23* Send a pull request with this.
24* Wait for it to be merged.
25
26Performing the release
27----------------------
28
Alex Stapleton63b3de22014-02-08 09:43:16 +000029The commit that merged the version number bump is now the official release
Alex Gaynorb3794db2014-01-07 09:25:54 -080030commit for this release. You will need to have ``gpg`` installed and a ``gpg``
31key in order to do a release. Once this has happened:
Alex Gaynor89063f62014-01-06 15:52:38 -080032
33* Run ``invoke release {version}``.
34
Alex Gaynorfea893c2014-01-07 11:06:51 -080035The release should now be available on PyPI and a tag should be available in
Paul Kehrer1f1e02f2014-07-06 08:52:17 -050036the repository.
37
38Verifying the release
39---------------------
40
41You should verify that ``pip install cryptography`` works correctly:
Alex Gaynor41c14d52014-01-07 11:19:08 -080042
43.. code-block:: pycon
44
45 >>> import cryptography
46 >>> cryptography.__version__
47 '...'
Alex Stapletona39a3192014-03-14 20:03:12 +000048 >>> import cryptography_vectors
49 >>> cryptography_vectors.__version__
50 '...'
Alex Gaynor41c14d52014-01-07 11:19:08 -080051
52Verify that this is the version you just released.
Paul Kehrerff26c742014-04-02 19:11:53 -050053
Paul Kehrer1f1e02f2014-07-06 08:52:17 -050054For the Windows wheels check the builds for the ``cryptography-wheel-builder``
55job and verify that the final output for each build shows it loaded and linked
56the expected OpenSSL version.
57
Paul Kehrerff26c742014-04-02 19:11:53 -050058Post-release tasks
59------------------
60
Paul Kehrer3bcd3e02014-04-02 21:00:35 -050061* Update the version number to the next major (e.g. ``0.5.dev1``) in
Paul Kehrerff26c742014-04-02 19:11:53 -050062 ``cryptography/__about__.py`` and
63 ``vectors/cryptography_vectors/__about__.py``.
Paul Kehrer3bcd3e02014-04-02 21:00:35 -050064* Add new :doc:`/changelog` entry with next version and note that it is under
65 active development
Paul Kehrerff26c742014-04-02 19:11:53 -050066* Send a pull request with these items
Paul Kehrer32547412014-04-02 21:31:41 -050067* Check for any outstanding code undergoing a deprecation cycle by looking in
68 ``cryptography.utils`` for ``DeprecatedIn**`` definitions. If any exist open
69 a ticket to increment them for the next release.
Ayrxeced8b72014-05-04 16:07:39 +080070* Send an email to the `mailing list`_ announcing the release.
71
72.. _`mailing list`: https://mail.python.org/mailman/listinfo/cryptography-dev