Create a PR template for releases including a post-release checklist
ADD
.github/PULL_REQUEST_TEMPLATE/release.md
+* [ ] See if all tests, including integration, pass
+* [ ] Get the release pull request approved by a [CODEOWNER](https://github.com/urllib3/urllib3/blob/main/.github/CODEOWNERS)
+* [ ] Squash merge the release pull request with message "`Release <VERSION>`"
+* [ ] Tag with X.Y.Z, push tag on urllib3/urllib3 (not on your fork, update `<REMOTE>` accordingly)
+
+ * Notice that the `<VERSION>` shouldn't have a `v` prefix (Use `1.26.6` instead of `v.1.26.6`)
+ * ```
+ git tag -a '<VERSION>' -m 'Release: <VERSION>'
+ git push <REMOTE> --tags
+ ```
+* [ ] Push to PyPI
+
+ * ```
+ cd /tmp
+ git clone ssh://git@github.com/urllib3/urllib3
+ cd urllib3
+ git checkout <TAG/VERSION>
+ python -m venv
+ source venv/bin/activate
+ python -m pip install -U pip
+ python -m pip install -U twine setuptools wheel
+ python setup.py sdist bdist_wheel
+
+ twine check dist/*
+ # Inspect the output to make sure it looks right
+ # Check versions, should be 1 wheel 1 sdist
+
+ twine upload dist/*
+ ```
+* [ ] Grab sdist and wheel from PyPI to attach to GitHub release
+* [ ] Announce on:
+
+ * [ ] GitHub releases
+ * [ ] Twitter
+ * [ ] Discord
+ * [ ] OpenCollective
+ * [ ] GitCoin Grants
+* [ ] Update Tidelift metadata

MODIFY
docs/contributing.rst
docs/contributing.rst
@@ -130,22 +130,12 @@ While writing documentation you should follow these guidelines:
Releases
--------
-A release candidate can be created by any contributor by creating a branch
-named ``release-x.x`` where ``x.x`` is the version of the proposed release.
+A release candidate can be created by any contributor.
+- Announce intent to release on Discord, see if anyone wants to include last minute
+ changes.
- Update ``CHANGES.rst`` and ``urllib3/__init__.py`` with the proper version number
- and commit the changes to ``release-x.x``.
-- Open a pull request to merge the ``release-x.x`` branch into the ``master`` branch.
-- Integration tests are run against the release candidate on Travis. From here on all
- the steps below will be handled by a maintainer so unless you receive review comments
- you are done here.
-- Once the pull request is squash merged into master the merging maintainer
- will tag the merge commit with the version number:
-
- - ``git tag -a 1.24.1 [commit sha]``
- - ``git push origin master --tags``
-
-- After the commit is tagged Travis will build the tagged commit and upload the sdist and wheel
- to PyPI and create a draft release on GitHub for the tag. The merging maintainer will
- ensure that the PyPI sdist and wheel are properly uploaded.
-- The merging maintainer will mark the draft release on GitHub as an approved release.
+ and commit the changes to a ``release-X.Y.Z`` branch.
+- Create a pull request and append ``&expand=1&template=release.md`` to the URL before
+ submitting in order to include our release checklist in the pull request description.
+- Follow the checklist!

Create a PR template for releases including a post-release checklist