##// END OF EJS Templates
Update release process docs
Carol Willing -
Show More
@@ -0,0 +1,56 b''
1 .. making_release::
2
3 Making an IPython release
4 =========================
5
6 1. Make sure the repository is clean of any file that could be problematic.
7 Remove all non-tracked files with:
8
9 .. code::
10
11 git clean -xfdi
12
13 This will ask for confirmation before removing all untracked files. Make
14 sure the ``dist/`` folder is clean to avoid any stale builds from
15 previous build attempts.
16
17 2. Update version number and ``_version_extra`` content in
18 ``IPython/core/release.py``.
19
20 Make sure the version number matches pep440, in particular, `rc` and `beta`
21 are not separated by `.` or the `sdist` and `bdist` will appear as different
22 releases. For example, a valid version number for a release candidate (rc)
23 release is: ``1.3rc1``. Notice that there is no separator between the '3'
24 and the 'r'.
25
26
27 3. Commit and tag the release with the current version number:
28
29 .. code::
30
31 git commit -am "release $VERSION"
32 git tag $VERSION
33
34
35 4. Build the ``sdist`` and ``wheel``:
36
37 .. code::
38
39 python setup.py sdist --formats=zip,gztar
40 python2 setup.py bdist_wheel
41 python3 setup.py bdist_wheel
42
43
44 5. Be sure to test the ``wheel`` and the ``sdist`` locally before uploading
45 them to PyPI. Make sure to use `twine <https://github.com/pypa/twine>`_ to
46 upload these archives over SSL.
47
48 .. code::
49
50 $ twine upload dist/*
51
52 6. If all went well, change the ``_version_extra = ''`` in
53 ``IPython/core/release.py`` back to the ``.dev`` suffix, or
54 ``_version_extra='.dev'``.
55
56 7. Push directly to master, remembering to push ``--tags`` too. No newline at end of file
@@ -1,19 +1,19 b''
1 .. _core_developer_guide:
1 .. _core_developer_guide:
2
2
3 ==================================
3 ==================================
4 Developer's guide to core IPython
4 Developer's guide to core IPython
5 ==================================
5 ==================================
6
6
7 This guide documents the development of core IPython. Alternatively,
7 This guide documents the development of core IPython. Alternatively,
8 developers of third party tools and libraries that use IPython should see the
8 developers of third party tools and libraries that use IPython should see the
9 :doc:`../development/index`.
9 :doc:`../development/index`.
10
10
11 Developers working on core IPython should also consult the
11 Developers working on core IPython should also consult the
12 `developer information <https://github.com/ipython/ipython/wiki/Dev:-Index>`_
12 `developer information <https://github.com/ipython/ipython/wiki/Dev:-Index>`_
13 on the IPython GitHub wiki.
13 on the IPython GitHub wiki.
14
14
15 .. toctree::
15 .. toctree::
16 :maxdepth: 1
16 :maxdepth: 1
17
17
18 release_process
18 release_process
19 old_release_doc
19 making_release
@@ -1,149 +1,149 b''
1 .. _release_process:
1 .. _release_process:
2
2
3 ======================
3 =======================
4 Releasing core IPython
4 IPython release process
5 ======================
5 =======================
6
6
7 This document contains the process that is used to create an IPython release.
7 This document contains the process that is used to create an IPython release.
8
8
9 Conveniently, the `release` script in the `tools` directory of the `IPython`
9 Conveniently, the `release` script in the `tools` directory of the `IPython`
10 repository automates most of the release process. This document serves as a
10 repository automates most of the release process. This document serves as a
11 handy reminder and checklist for the release manager.
11 handy reminder and checklist for the release manager.
12
12
13 1. Set Environment variables
13 1. Set Environment variables
14 ----------------------------
14 ----------------------------
15
15
16 Set environment variables to document previous release tag, current
16 Set environment variables to document previous release tag, current
17 release milestone, current release version, and git tag::
17 release milestone, current release version, and git tag::
18
18
19 PREV_RELEASE=rel-1.0.0
19 PREV_RELEASE=rel-1.0.0
20 MILESTONE=1.1
20 MILESTONE=1.1
21 VERSION=1.1.0
21 VERSION=1.1.0
22 TAG="rel-$VERSION"
22 TAG="rel-$VERSION"
23 BRANCH=master
23 BRANCH=master
24
24
25 These variables may be used later to copy/paste as answers to the script
25 These variables may be used later to copy/paste as answers to the script
26 questions instead of typing the appropriate command when the time comes. These
26 questions instead of typing the appropriate command when the time comes. These
27 variables are not used by the scripts directly; therefore, there is no need to
27 variables are not used by the scripts directly; therefore, there is no need to
28 `export` the variables.
28 `export` the variables.
29
29
30 2. Create GitHub stats and finish release note
30 2. Create GitHub stats and finish release note
31 ----------------------------------------------
31 ----------------------------------------------
32
32
33 .. note::
33 .. note::
34
34
35 Before generating the GitHub stats, verify that all closed issues and
35 Before generating the GitHub stats, verify that all closed issues and
36 pull requests have `appropriate milestones <https://github.com/ipython/ipython/wiki/Dev%3A-GitHub-workflow#milestones>`_.
36 pull requests have `appropriate milestones <https://github.com/ipython/ipython/wiki/Dev%3A-GitHub-workflow#milestones>`_.
37 `This search <https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue>`_
37 `This search <https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue>`_
38 should return no results before creating the GitHub stats.
38 should return no results before creating the GitHub stats.
39
39
40 If a major release:
40 If a major release:
41
41
42 - merge any pull request notes into what's new::
42 - merge any pull request notes into what's new::
43
43
44 python tools/update_whatsnew.py
44 python tools/update_whatsnew.py
45
45
46 - update `docs/source/whatsnew/development.rst`, to ensure it covers
46 - update `docs/source/whatsnew/development.rst`, to ensure it covers
47 the major release features
47 the major release features
48 - move the contents of `development.rst` to `versionX.rst` where `X` is
48 - move the contents of `development.rst` to `versionX.rst` where `X` is
49 the numerical release version
49 the numerical release version
50 - generate summary of GitHub contributions, which can be done with::
50 - generate summary of GitHub contributions, which can be done with::
51
51
52 python tools/github_stats.py --milestone $MILESTONE > stats.rst
52 python tools/github_stats.py --milestone $MILESTONE > stats.rst
53
53
54 which may need some manual cleanup of `stats.rst`. Add the cleaned
54 which may need some manual cleanup of `stats.rst`. Add the cleaned
55 `stats.rst` results to `docs/source/whatsnew/github-stats-X.rst` where
55 `stats.rst` results to `docs/source/whatsnew/github-stats-X.rst` where
56 `X` is the numerical release version. If creating a major release, make
56 `X` is the numerical release version. If creating a major release, make
57 a new `github-stats-X.rst` file; if creating a minor release, the
57 a new `github-stats-X.rst` file; if creating a minor release, the
58 content from `stats.rst` may simply be added to the top of an existing
58 content from `stats.rst` may simply be added to the top of an existing
59 `github-stats-X.rst` file.
59 `github-stats-X.rst` file.
60
60
61 To find duplicates and update `.mailmap`, use::
61 To find duplicates and update `.mailmap`, use::
62
62
63 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
63 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
64
64
65
65
66 3. Run the `tools/build_release` script
66 3. Run the `tools/build_release` script
67 ---------------------------------------
67 ---------------------------------------
68
68
69 Running `tools/build_release` does all the file checking and building that
69 Running `tools/build_release` does all the file checking and building that
70 the real release script will do. This makes test installations, checks that
70 the real release script will do. This makes test installations, checks that
71 the build procedure runs OK, and tests other steps in the release process.
71 the build procedure runs OK, and tests other steps in the release process.
72
72
73 We encourage creating a test build of the docs as well.
73 We encourage creating a test build of the docs as well.
74
74
75 4. Create and push the new tag
75 4. Create and push the new tag
76 ------------------------------
76 ------------------------------
77
77
78 Edit `IPython/core/release.py` to have the current version.
78 Edit `IPython/core/release.py` to have the current version.
79
79
80 Commit the changes to release.py and jsversion::
80 Commit the changes to release.py and jsversion::
81
81
82 git commit -am "release $VERSION"
82 git commit -am "release $VERSION"
83 git push origin $BRANCH
83 git push origin $BRANCH
84
84
85 Create and push the tag::
85 Create and push the tag::
86
86
87 git tag -am "release $VERSION" "$TAG"
87 git tag -am "release $VERSION" "$TAG"
88 git push origin --tags
88 git push origin --tags
89
89
90 Update release.py back to `x.y-dev` or `x.y-maint`, and push::
90 Update release.py back to `x.y-dev` or `x.y-maint`, and push::
91
91
92 git commit -am "back to development"
92 git commit -am "back to development"
93 git push origin $BRANCH
93 git push origin $BRANCH
94
94
95 5. Get a fresh clone
95 5. Get a fresh clone
96 --------------------
96 --------------------
97
97
98 Get a fresh clone of the tag for building the release::
98 Get a fresh clone of the tag for building the release::
99
99
100 cd /tmp
100 cd /tmp
101 git clone --depth 1 https://github.com/ipython/ipython.git -b "$TAG"
101 git clone --depth 1 https://github.com/ipython/ipython.git -b "$TAG"
102
102
103 6. Run the release script
103 6. Run the release script
104 -------------------------
104 -------------------------
105
105
106 Run the `release` script::
106 Run the `release` script::
107
107
108 cd tools && ./release
108 cd tools && ./release
109
109
110 This makes the tarballs, zipfiles, and wheels. It posts
110 This makes the tarballs, zipfiles, and wheels. It posts
111 them to archive.ipython.org and registers the release with PyPI.
111 them to archive.ipython.org and registers the release with PyPI.
112
112
113 This step requires having a current wheel, Python 3.4 and Python 2.7.
113 This step requires having a current wheel, Python 3.4 and Python 2.7.
114
114
115 7. Draft a short release announcement
115 7. Draft a short release announcement
116 -------------------------------------
116 -------------------------------------
117
117
118 The announcement should include:
118 The announcement should include:
119
119
120 - release highlights
120 - release highlights
121 - a link to the html version of the *What's new* section of the documentation
121 - a link to the html version of the *What's new* section of the documentation
122 - a link to upgrade or installation tips (if necessary)
122 - a link to upgrade or installation tips (if necessary)
123
123
124 Post the announcement to the mailing list, and link from Twitter.
124 Post the announcement to the mailing list, and link from Twitter.
125
125
126 8. Update milestones on GitHub
126 8. Update milestones on GitHub
127 ------------------------------
127 ------------------------------
128
128
129 These steps will bring milestones up to date:
129 These steps will bring milestones up to date:
130
130
131 - close the just released milestone
131 - close the just released milestone
132 - open a new milestone for the next release (x, y+1), if the milestone doesn't
132 - open a new milestone for the next release (x, y+1), if the milestone doesn't
133 exist already
133 exist already
134
134
135 9. Update the IPython website
135 9. Update the IPython website
136 -----------------------------
136 -----------------------------
137
137
138 The IPython website should document the new release:
138 The IPython website should document the new release:
139
139
140 - add release announcement (news, announcements)
140 - add release announcement (news, announcements)
141 - update current version and download links
141 - update current version and download links
142 - update links on the documentation page (especially if a major release)
142 - update links on the documentation page (especially if a major release)
143
143
144 10. Celebrate!
144 10. Celebrate!
145 --------------
145 --------------
146
146
147 Celebrate the release and please thank the contributors for their work. Great
147 Celebrate the release and please thank the contributors for their work. Great
148 job!
148 job!
149
149
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now