summaryrefslogtreecommitdiff
path: root/RELEASING.txt
diff options
context:
space:
mode:
Diffstat (limited to 'RELEASING.txt')
-rw-r--r--RELEASING.txt179
1 files changed, 142 insertions, 37 deletions
diff --git a/RELEASING.txt b/RELEASING.txt
index 553d2dcf2..94726f9f3 100644
--- a/RELEASING.txt
+++ b/RELEASING.txt
@@ -1,7 +1,25 @@
Releasing Pyramid
=================
-- Do any necessary branch merges (e.g. master to branch, branch to master).
+- For clarity, we define releases as follows.
+
+ - Alpha, beta, dev and similar statuses do not qualify whether a release is
+ major or minor. The term "pre-release" means alpha, beta, or dev.
+
+ - A release is final when it is no longer pre-release.
+
+ - A *major* release is where the first number either before or after the
+ first dot increases. Examples: 1.6 to 1.7a1, or 1.8 to 2.0.
+
+ - A *minor* or *bug fix* release is where the number after the second dot
+ increases. Example: 1.6 to 1.6.1.
+
+Prepare new release branch
+--------------------------
+
+- Create a new release branch, incrementing the version number.
+
+- Do any necessary branch merges (e.g., master to branch, branch to master).
- On release branch:
@@ -11,76 +29,163 @@ Releasing Pyramid
$ tox -r
- Make sure statement coverage is at 100%::
+ Make sure statement coverage is at 100% (the test run will fail if not).
+
+- Run tests on Windows if feasible.
-- Run Windows tests for Python 2.6, 2.7, 3.2, and 3.3 if feasible.
+- Make sure all scaffold tests pass (CPython 2.7, 3.4, 3.5, 3.6, and 3.7, and
+ PyPy on UNIX; this doesn't work on Windows):
-- Make sure all scaffold tests pass (Py 2.6, 2.7, 3.2, 3.3 and pypy on UNIX;
- this doesn't work on Windows):
+ $ tox -e{py27,py34,py35,py36,py37,pypy}-scaffolds
- $ python pyramid/scaffolds/tests.py
+- For each ``pyramid-cookiecutter-*``, make a new branch off "master" with the
+ same name to align with the new Pyramid release branch name.
-- Ensure all features of the release are documented (audit CHANGES.txt or
+- In the docs, update the ``cookiecutter`` command with the new branch name,
+ for example, ``cookiecutter gh:Pylons/pyramid-cookiecutter-starter --checkout
+ x.y-branch``. A search for ``cookiecutter gh:Pylons/pyramid-cookiecutter-``
+ should return all instances to be updated.
+
+- Ensure all features of the release are documented (audit CHANGES.rst or
communicate with contributors).
-- Copy relevant changes (delta bug fixes) from CHANGES.txt to
- docs/whatsnew-X.X (if it's a major release).
+- Change CHANGES.rst heading to reflect the new version number.
+
+- Copy relevant changes (delta bug fixes) from CHANGES.rst to
+ docs/whatsnew-X.X (if it's a major release). Minor releases should
+ include a link under "Bug Fix Releases" to the minor feature
+ changes in CHANGES.rst.
-- Make sure docs render OK::
+- Update README.rst to use correct versions of badges, URLs, and ALT option
+ according to the new release branch name.
- $ cd docs
- $ make clean html
+- Update whatsnew-X.X.rst in docs to point at change log entries for individual
+ releases if applicable.
- There should be no meaningful errors or warnings.
+- For major version releases, in contributing.md, update branch descriptions.
-- Change setup.py version to the new version number.
+- For major version releases, in docs/conf.py, update values under
+ html_theme_options for in_progress and outdated across master, releasing
+ branch, and previously released branch. Also in the previously released
+ branch only, uncomment the sections to enable pylons_sphinx_latesturl.
-- Change CHANGES.txt heading to reflect the new version number.
+- Change setup.py version to the release version number.
-- Make sure PyPI long description renders (requires ``collective.dist``
- installed into your Python)::
+- Make sure PyPI long description renders::
- $ python setup.py check -r
+ $ tox -e lint
- Create a release tag.
-- Make sure your system Python has ``setuptools-git`` installed and release to
- PyPI::
+ $ git tag X.X
- $ python setup.py sdist register upload
+- Build the sdist and wheel.
-- Edit `http://wiki.python.org/moin/WebFrameworks
- <http://wiki.python.org/moin/WebFrameworks>`_.
+ $ tox -e build
-- Publish new version of docs.
+- Upload the artifacts to PyPI:
-- Announce to maillist.
+ $ twine upload dist/pyramid-X.X-*
+
+- Configure RTD to publish the new release version of the docs.
+
+Prepare master for further development (major releases only)
+------------------------------------------------------------
+
+- Checkout master.
+
+- In CHANGES.rst, preserve headings but clear out content. Add heading
+ "unreleased" for the version number.
+
+- From the release branch, forward port the changes in CHANGES.rst to
+ HISTORY.rst.
+
+- In contributing.md, forward port branch descriptions from release branch.
+
+- In docs/conf.py, add a commented line under
+ pylons_sphinx_latesturl_pagename_overrides for the release.
+
+- Change setup.py version to the next version number.
+
+- Update README.rst to use correct versions of badges, URLs, and ALT option
+ for "master" instead of the major release version.
+
+- In the docs, update the ``cookiecutter`` command with ``master``,
+ for example, ``cookiecutter gh:Pylons/pyramid-cookiecutter-starter --checkout
+ master``. A search for ``cookiecutter gh:Pylons/pyramid-cookiecutter-``
+ should return all instances to be updated.
+
+Update previous version (final releases only)
+---------------------------------------------
+
+- In docs/conf.py, update values under html_theme_options for in_progress and
+ outdated. Uncomment the sections to enable pylons_sphinx_latesturl.
+
+- Configure RTD to point the "latest" alias to the new release version of the
+ docs.
+
+
+Cookiecutters
+-------------
+
+- For each cookiecutter, clone the newly released branch to "latest" branch.
+
+
+Marketing and communications
+----------------------------
+
+- Edit Pylons/trypyramid.com/src/templates/documentation.ejs for major
+ releases, pre-releases, and once pre-releases are final.
+
+- Edit `https://wiki.python.org/moin/WebFrameworks
+ <https://wiki.python.org/moin/WebFrameworks>`_.
+
+- Edit `https://en.wikipedia.org/wiki/Pylons_project <https://en.wikipedia.org/wiki/Pylons_project>`_.
+
+- Edit `https://en.wikipedia.org/wiki/Comparison_of_web_frameworks <https://en.wikipedia.org/wiki/Comparison_of_web_frameworks>`_.
- Announce to Twitter.
-Announcement template
-----------------------
+```
+Pyramid 1.x released.
+
+PyPI
+https://pypi.org/project/pyramid/1.x/
-Pyramid 1.1.X has been released.
+=== One time only for new version, first pre-release ===
+What's New
+https://docs.pylonsproject.org/projects/pyramid/en/1.X-branch/whatsnew-1.X.html
+=== For all subsequent pre-releases ===
+Changes
+https://docs.pylonsproject.org/projects/pyramid/en/1.X-branch/changes.html#version-yyyy-mm-dd
+
+Issues
+https://github.com/Pylons/pyramid/issues
+```
+
+- Announce to maillist.
-Here are the changes:
+```
+Pyramid 1.X.X has been released.
-<<changes>>
+The full changelog is here:
+https://docs.pylonsproject.org/projects/pyramid/en/1.X-branch/changes.html
-A "What's New In Pyramid 1.1" document exists at
-http://docs.pylonsproject.org/projects/pyramid/1.1/whatsnew-1.1.html .
+What's New In Pyramid 1.X:
+https://docs.pylonsproject.org/projects/pyramid/en/1.X-branch/whatsnew-1.X.html
-You will be able to see the 1.1 release documentation (across all
-alphas and betas, as well as when it eventually gets to final release)
-at http://docs.pylonsproject.org/projects/pyramid/1.1/ .
+1.X release documentation (across all alphas and betas, as well as when it gets
+to final release):
+https://docs.pylonsproject.org/projects/pyramid/en/1.X-branch/
You can install it via PyPI:
- easy_install Pyramid==1.1a4
+ pip install Pyramid==1.X
Enjoy, and please report any issues you find to the issue tracker at
https://github.com/Pylons/pyramid/issues
Thanks!
-- C
+- Pyramid core developers
+```