From 1e8cdb54212e11b8e06145f6f7bf1f5912956224 Mon Sep 17 00:00:00 2001 From: Robert Nishihara Date: Mon, 24 Dec 2018 11:09:09 -0800 Subject: [PATCH] Update release documentation. (#3587) * Update release instructions. * Add note about wheels. * Fix * Update * update example * Update RELEASE_PROCESS.rst --- dev/RELEASE_PROCESS.rst | 47 ++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/dev/RELEASE_PROCESS.rst b/dev/RELEASE_PROCESS.rst index fdf59c6ad..6c36a3349 100644 --- a/dev/RELEASE_PROCESS.rst +++ b/dev/RELEASE_PROCESS.rst @@ -3,23 +3,34 @@ Release Process This document describes the process for creating new releases. -1. **Testing:** Before a release is created, significant testing should be done. - In particular, our continuous integration currently does not include - sufficient coverage for testing at scale and for testing fault tolerance, so - it is important to run tests on clusters of hundreds of machines and to make - sure that the tests complete when some machines are killed. +1. First, you should build wheels that you'd like to use for testing. That can + be done by following the `documentation for building wheels`_. -2. **Libraries:** Make sure that the libraries (e.g., RLlib, Tune) are in a - releasable state. +2. **Testing:** Before a release is created, significant testing should be done. + Run the script `test/stress_tests/run_stress_tests.sh`_ and make sure it + passes. *And make sure it is testing the right version of Ray!* This will use + the autoscaler to start a bunch of machines and run some tests. Any new + stress tests should be added to this script so that they will be run + automatically for future release testing. -3. **Increment the Python version:** Create a PR that increments the Python +3. **Libraries:** Make sure that the libraries (e.g., RLlib, Tune, SGD) are in a + releasable state. TODO(rkn): These libraries should be tested automatically + by the script above, but they aren't yet. + +4. **Increment the Python version:** Create a PR that increments the Python package version. See `this example`_. -4. **Create a GitHub release:** Create a GitHub release through the `GitHub +5. **Create a GitHub release:** Create a GitHub release through the `GitHub website`_. The release should be created at the commit from the previous - step. This should include release notes. + step. This should include **release notes**. Copy the style and formatting + used by previous releases. -5. **Upload to PyPI Test:** Upload the wheels to the PyPI test site using +6. **Python wheels:** The Python wheels will automatically be built on Travis + and uploaded to the ``ray-wheels`` S3 bucket. Download these wheels (e.g., + using ``wget``) and install them with ``pip`` and run some simple Ray scripts + to verify that they work. + +7. **Upload to PyPI Test:** Upload the wheels to the PyPI test site using ``twine`` (ask Robert to add you as a maintainer to the PyPI project). You'll need to run a command like @@ -27,9 +38,9 @@ This document describes the process for creating new releases. twine upload --repository-url https://test.pypi.org/legacy/ ray/.whl/* - assuming that you've built all of the wheels and put them in ``ray/.whl`` - (note that you can also get them from the "ray-wheels" S3 bucket), - that you've installed ``twine``, and that you've made PyPI accounts. + assuming that you've downloaded the wheels from the ``ray-wheels`` S3 bucket + and put them in ``ray/.whl``, that you've installed ``twine`` through + ``pip``, and that you've made PyPI accounts. Test that you can install the wheels with pip from the PyPI test repository with @@ -43,9 +54,9 @@ This document describes the process for creating new releases. installed by checking ``ray.__version__`` and ``ray.__file__``. Do this at least for MacOS and for Linux, as well as for Python 2 and Python - 3. + 3. Also do this for different versions of MacOS. -6. **Upload to PyPI:** Now that you've tested the wheels on the PyPI test +8. **Upload to PyPI:** Now that you've tested the wheels on the PyPI test repository, they can be uploaded to the main PyPI repository. Be careful, **it will not be possible to modify wheels once you upload them**, so any mistake will require a new release. You can upload the wheels with a command @@ -64,5 +75,7 @@ This document describes the process for creating new releases. finds the correct Ray version, and successfully runs some simple scripts on both MacOS and Linux as well as Python 2 and Python 3. -.. _`this example`: https://github.com/ray-project/ray/pull/1745 +.. _`documentation for building wheels`: https://github.com/ray-project/ray/blob/master/python/README-building-wheels.md +.. _`test/stress_tests/run_stress_tests.sh`: https://github.com/ray-project/ray/blob/master/test/stress_tests/run_stress_tests.sh +.. _`this example`: https://github.com/ray-project/ray/pull/3420 .. _`GitHub website`: https://github.com/ray-project/ray/releases