summaryrefslogtreecommitdiff
path: root/doc/release.md
blob: 94ebb5643fa41fa37383d9427c70d66682f765ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 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. Put the version numbers, and the release date into the changelog
   3. 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
```

4. Submit your changes in a merge request and make sure the tests are passing.

5. Do the actual release by tagging the master with `vX.Y.Z` (ie `v1.6.12` or `v3.0.0a0`
   for example).

Until the release is done via GitHub actions on tag, run the following commands:

```bash
git clean -fdx && find . -name '*.pyc' -delete
python3 -m venv venv
source venv/bin/activate
pip3 install twine wheel setuptools
python setup.py sdist --formats=gztar bdist_wheel
twine upload dist/*
# don't forget to tag it as well
```

## Post release

### 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` or `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`.