Show More
@@ -0,0 +1,67 b'' | |||||
|
1 | .. _core_developer_guide: | |||
|
2 | ||||
|
3 | ================================== | |||
|
4 | Developer's guide for core IPython | |||
|
5 | ================================== | |||
|
6 | ||||
|
7 | This guide documents the development of core *IPython itself*. Developers of | |||
|
8 | third party tools and libraries that use IPython should see the | |||
|
9 | :doc:`development/index` at `Developer's guide for Third Party Tools and Libraries`. | |||
|
10 | ||||
|
11 | Developers working on IPython itself should also consult the | |||
|
12 | `developer information <https://github.com/ipython/ipython/wiki/Dev:-Index>`_ | |||
|
13 | on the IPython GitHub wiki. | |||
|
14 | ||||
|
15 | .. toctree:: | |||
|
16 | :maxdepth: 1 | |||
|
17 | ||||
|
18 | release_process | |||
|
19 | ||||
|
20 | Making an IPython release | |||
|
21 | ========================= | |||
|
22 | ||||
|
23 | Make sure the repository is clean of any file that could be problematic. | |||
|
24 | You can remove all non-tracked files with: | |||
|
25 | ||||
|
26 | .. code:: | |||
|
27 | ||||
|
28 | git clean -xfdi | |||
|
29 | ||||
|
30 | This would ask you for confirmation before removing all untracked files. Make | |||
|
31 | sure the ``dist/`` folder is clean and avoid stale build from | |||
|
32 | previous attempts. | |||
|
33 | ||||
|
34 | 1. Update version number in ``IPython/core/release.py``. | |||
|
35 | ||||
|
36 | Make sure the version number match pep440, in particular, `rc` and `beta` are | |||
|
37 | not separated by `.` or the `sdist` and `bdist` will appear as different | |||
|
38 | releases. | |||
|
39 | ||||
|
40 | 2. Commit and tag the release with the current version number: | |||
|
41 | ||||
|
42 | .. code:: | |||
|
43 | ||||
|
44 | git commit -am "release $VERSION" | |||
|
45 | git tag $VERSION | |||
|
46 | ||||
|
47 | ||||
|
48 | 3. You are now ready to build the ``sdist`` and ``wheel``: | |||
|
49 | ||||
|
50 | .. code:: | |||
|
51 | ||||
|
52 | python setup.py sdist --formats=zip,gztar | |||
|
53 | python2 setup.py bdist_wheel | |||
|
54 | python3 setup.py bdist_wheel | |||
|
55 | ||||
|
56 | ||||
|
57 | 4. You can now test the ``wheel`` and the ``sdist`` locally before uploading to PyPI. | |||
|
58 | Make sure to use `twine <https://github.com/pypa/twine>`_ to upload the archives over SSL. | |||
|
59 | ||||
|
60 | .. code:: | |||
|
61 | ||||
|
62 | $ twine upload dist/* | |||
|
63 | ||||
|
64 | 5. If all went well, change the ``IPython/core/release.py`` back adding the ``.dev`` suffix. | |||
|
65 | ||||
|
66 | 6. Push directly on master, not forgetting to push ``--tags``. | |||
|
67 |
@@ -0,0 +1,99 b'' | |||||
|
1 | This document contains notes about the process that is used to release IPython. | |||
|
2 | Our release process is currently not very formal and could be improved. | |||
|
3 | ||||
|
4 | Most of the release process is automated by the `release` script in the `tools` | |||
|
5 | directory of our main repository. This document is just a handy reminder for | |||
|
6 | the release manager. | |||
|
7 | ||||
|
8 | # 0. Environment variables | |||
|
9 | ||||
|
10 | You can set some env variables to note previous release tag and current release milestone, version, and git tag: | |||
|
11 | ||||
|
12 | PREV_RELEASE=rel-1.0.0 | |||
|
13 | MILESTONE=1.1 | |||
|
14 | VERSION=1.1.0 | |||
|
15 | TAG="rel-$VERSION" | |||
|
16 | BRANCH=master | |||
|
17 | ||||
|
18 | These will be used later if you want to copy/paste, or you can just type the appropriate command when the time comes. These variables are not used by scripts (hence no `export`). | |||
|
19 | ||||
|
20 | # 1. Finish release notes | |||
|
21 | ||||
|
22 | - If a major release: | |||
|
23 | ||||
|
24 | - merge any pull request notes into what's new: | |||
|
25 | ||||
|
26 | python tools/update_whatsnew.py | |||
|
27 | ||||
|
28 | - update `docs/source/whatsnew/development.rst`, to ensure it covers the major points. | |||
|
29 | - move the contents of `development.rst` to `versionX.rst` | |||
|
30 | - generate summary of GitHub contributions, which can be done with: | |||
|
31 | ||||
|
32 | python tools/github_stats.py --milestone $MILESTONE > stats.rst | |||
|
33 | ||||
|
34 | which may need some manual cleanup. Add the cleaned up result and add it to `docs/source/whatsnew/github-stats-X.rst` (make a new file, or add it to the top, depending on whether it is a major release). | |||
|
35 | You can use: | |||
|
36 | ||||
|
37 | git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f | |||
|
38 | ||||
|
39 | to find duplicates and update `.mailmap`. | |||
|
40 | Before generating the GitHub stats, verify that all closed issues and pull requests [have appropriate milestones](https://github.com/ipython/ipython/wiki/Dev%3A-GitHub-workflow#milestones). [This search](https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue) should return no results. | |||
|
41 | ||||
|
42 | # 2. Run the `tools/build_release` script | |||
|
43 | ||||
|
44 | This does all the file checking and building that the real release script will do. | |||
|
45 | This will let you do test installations, check that the build procedure runs OK, etc. | |||
|
46 | You may want to also do a test build of the docs. | |||
|
47 | ||||
|
48 | # 3. Create and push the new tag | |||
|
49 | ||||
|
50 | Edit `IPython/core/release.py` to have the current version. | |||
|
51 | ||||
|
52 | Commit the changes to release.py and jsversion: | |||
|
53 | ||||
|
54 | git commit -am "release $VERSION" | |||
|
55 | git push origin $BRANCH | |||
|
56 | ||||
|
57 | Create and push the tag: | |||
|
58 | ||||
|
59 | git tag -am "release $VERSION" "$TAG" | |||
|
60 | git push origin --tags | |||
|
61 | ||||
|
62 | Update release.py back to `x.y-dev` or `x.y-maint`, and push: | |||
|
63 | ||||
|
64 | git commit -am "back to development" | |||
|
65 | git push origin $BRANCH | |||
|
66 | ||||
|
67 | # 4. Get a fresh clone of the tag for building the release: | |||
|
68 | ||||
|
69 | cd /tmp | |||
|
70 | git clone --depth 1 https://github.com/ipython/ipython.git -b "$TAG" | |||
|
71 | ||||
|
72 | # 5. Run the `release` script | |||
|
73 | ||||
|
74 | cd tools && ./release | |||
|
75 | ||||
|
76 | This makes the tarballs, zipfiles, and wheels. It posts them to archive.ipython.org and | |||
|
77 | registers the release with PyPI. | |||
|
78 | ||||
|
79 | This will require that you have current wheel, Python 3.4 and Python 2.7. | |||
|
80 | ||||
|
81 | # 7. Update the IPython website | |||
|
82 | ||||
|
83 | - release announcement (news, announcements) | |||
|
84 | - update current version and download links | |||
|
85 | - (If major release) update links on the documentation page | |||
|
86 | ||||
|
87 | # 8. Drafting a short release announcement | |||
|
88 | ||||
|
89 | This should include i) highlights and ii) a link to the html version of | |||
|
90 | the *What's new* section of the documentation. | |||
|
91 | ||||
|
92 | Post to mailing list, and link from Twitter. | |||
|
93 | ||||
|
94 | # 9. Update milestones on GitHub | |||
|
95 | ||||
|
96 | - close the milestone you just released | |||
|
97 | - open new milestone for (x, y+1), if it doesn't exist already | |||
|
98 | ||||
|
99 | # 10. Celebrate! |
@@ -1,20 +1,14 b'' | |||||
1 | .. _developer_guide: |
|
1 | .. _developer_guide: | |
2 |
|
2 | |||
3 | ========================= |
|
3 | ===================================================== | |
4 | IPython developer's guide |
|
4 | Developer's guide for Third Party Tools and Libraries | |
5 | ========================= |
|
5 | ===================================================== | |
6 |
|
6 | |||
7 | This are two categories of developer focused documentation: |
|
7 | .. important: | |
8 |
|
8 | |||
9 | 1. Documentation for developers of *IPython itself*. |
|
9 | This guide contains information for developers of third party tools and | |
10 | 2. Documentation for developers of third party tools and libraries |
|
10 | libraries that use IPython. Documentation for developers of core | |
11 | that use IPython. |
|
11 | *IPython itself* can be found in the :doc:`coredev/index`. | |
12 |
|
||||
13 | This part of our documentation only contains information in the second category. |
|
|||
14 |
|
||||
15 | Developers interested in working on IPython itself should consult |
|
|||
16 | our `developer information <https://github.com/ipython/ipython/wiki/Dev:-Index>`_ |
|
|||
17 | on the IPython GitHub wiki. |
|
|||
18 |
|
|
12 | ||
19 | .. toctree:: |
|
13 | .. toctree:: | |
20 | :maxdepth: 1 |
|
14 | :maxdepth: 1 |
General Comments 0
You need to be logged in to leave comments.
Login now