summaryrefslogtreecommitdiff
path: root/doc/release.md
diff options
context:
space:
mode:
authorPierre Sassoulas <pierre.sassoulas@gmail.com>2021-02-28 19:44:28 +0100
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-02-28 20:21:45 +0100
commitfd9061317eccfc1ac8d4eb258fc2e57964e1470e (patch)
treeb0980835998e9074e7722f83fe39b74c645988a8 /doc/release.md
parentf3a7c35599d8134dc4696a008cbf86d0e105b3b9 (diff)
downloadastroid-git-fd9061317eccfc1ac8d4eb258fc2e57964e1470e.tar.gz
Upgrade the doc about release
Diffstat (limited to 'doc/release.md')
-rw-r--r--doc/release.md74
1 files changed, 74 insertions, 0 deletions
diff --git a/doc/release.md b/doc/release.md
new file mode 100644
index 00000000..66df2e99
--- /dev/null
+++ b/doc/release.md
@@ -0,0 +1,74 @@
+# Releasing an astroid version
+
+So, you want to release the ``X.Y.Z`` version of astroid ?
+
+## Process
+
+1. Preparation
+ 1. Check if the dependencies of the package are correct
+ 2. Update ``numversion`` in ``__pkginfo__``, ``dev_version`` should also be None when you tag.
+ 3. Put the version numbers, and the release date into the changelog
+ 4. Put the release date into the ``What's new`` section.
+ 5. Generate the new copyright notices for this release:
+
+```bash
+pip3 install copyrite
+copyrite --contribution-threshold 1 --change-threshold 3 --backend-type \
+git --aliases=.copyrite_aliases . --jobs=8
+# During the commit pre-commit and pyupgrade will remove the encode utf8
+# automatically
+```
+
+ 6. Submit your changes in a merge request.
+
+2. Make sure the tests are passing on Travis/GithubActions:
+ https://travis-ci.org/PyCQA/astroid/
+
+3. Do the actual release by tagging the master with ``astroid-X.Y.Z`` (ie ``astroid-1.6.12``
+ for example). Travis should deal with the release process once the tag is pushed
+ with `git push origin --tags`
+
+## Manual Release
+
+Following the previous steps, for a manual release run the following commands:
+
+```bash
+git clean -fdx && find . -name '*.pyc' -delete
+python setup.py sdist --formats=gztar bdist_wheel
+twine upload dist/*
+# don't forget to tag it as well
+```
+
+## Post release
+
+### New branch to create for major releases
+
+The master branch will have all the new features for the ``X.Y+1`` version
+
+If you're doing a major release, you need to create the ``X.Y`` branch
+where we will cherry-pick bugs to release the ``X.Y.Z+1`` minor versions
+
+### Milestone handling
+
+We move issue that were not done in the next milestone and block release only
+if it's an issue labelled as blocker.
+
+### Files to update after releases
+
+#### Changelog
+
+* Create a new section, with the name of the release ``X.Y.Z+1`` on the ``X.Y`` branch.
+* If it's a major release, also create a new section for ``X.Y+1.0`` on the master branch
+
+You need to add the estimated date when it is going to be published. If
+no date can be known at that time, we should use ``Undefined``.
+
+#### Whatsnew
+
+If it's a major release, create a new ``What's new in astroid X.Y+1`` document
+Take a look at the examples from ``doc/whatsnew``.
+
+### Versions
+
+Update ``numversion`` to ``X.Y+1.0`` in ``__pkginfo__`` for ``master`` and to ``X.Y.Z+1`` for the ``X.Y`` branch.
+``dev_version`` should also be back to an integer after the tag.