-
Notifications
You must be signed in to change notification settings - Fork 3k
Release Process
This article suppose you already have your code commited in the master
branch of the repository, with tests updated.
Let's assume you want to release azure-mgmt-webapp
.
For all packages, you need to update the HISTORY.rst
file
/azure-mgmt-webapp/HISTORY.rst
The ChangeLog.txt
at the root of the repo is deprecated and should not be updated.
You need to check the versions in:
/azure-mgmt-webapp/azure/mgmt/webapp/version.py
Make a diff of your setup.py
against the reference and update yours if necessary. Dependencies are critical.
Update the version in the following files. Note that there may be multiple instances of the version in each of the files.
The README.rst for the bundle packages have the exact version of the packages they are bundling. Change the text AND the links.
/azure/README.rst
/azure-mgmt/README.rst
These setup.py have to be changed manually if necessary:
/azure/setup.py
/azure-common/setup.py
/azure-mgmt/setup.py
/azure-mgmt-common/setup.py
/azure-mgmt-nspkg/setup.py
/azure-nspkg/setup.py
/azure-servicebus/setup.py
/azure-servicemanagement-legacy/setup.py
Do NOT forget the install_requires
list.
Several packages (non-bundle and non-nspkg) expose a __version__
attribute.
/azure-common/azure/common/__init__.py
/azure-mgmt-common/azure/mgmt/common/__init__.py
/azure-servicebus/azure/servicebus/constants.py
/azure-servicemanagement-legacy/azure/servicemanagement/constants.py
The test recordings include the version number in the User-Agent header of each request, but this header is not required for the tests to pass. You may want to find/replace those, or you may have to create new recordings.
In any case, make sure that the tests succeed in playback mode after you've incremented the version.
To build a package to check in your setup.py
is correct:
python .\build_package.py azure-mgmt-webapp
This requires wheel
to work.
Once you've uploaded to PyPI, there's no way to overwrite the package. In case of problems, you'll need to increment the version number. To make sure everything works fine, upload and then test installing from the test server first. Make sure you install the dependencies manually, as they won't be present on the test server.
- Create an account for the test server
- Update .pypirc:
[test]
repository = https://testpypi.python.org/pypi
username = <yourusername>
password = <yourpassword>
To upload to the test server:
twine upload -r test azure-mgmt-compute\dist\*.zip
twine upload -r test azure-mgmt-compute\dist\*.whl
Make sure you already have the non-azure dependencies installed, otherwise they may not be found on the test server. Don't install using --no-deps
. Use the requirements.txt
to install everything needed
pip install -r requirements.txt
To install from the test server:
pip install azure -i https://testpypi.python.org/pypi
Travis is now looking at tags on Github to release for you. For instance, once azure-mgmt-compute
0.45.0 is ready
to be release, just tag the corresponding commit this way:
azure-mgmt-webapp_0.45.0
The syntax HAS to be respected. Travis will build the package, check if the version in the tag is the version built and then upload to PyPI. This process is done by the "Python 3.6" job only (yes it's a waste of resources https://github.com/travis-ci/travis-ci/issues/7149)
- Update .pypirc:
[pypi]
repository = https://pypi.python.org/pypi
username = <yourusername>
password = <yourpassword>
To upload to production:
twine upload dist\*.zip
twine upload dist\*.whl
To install from production:
pip install azure
If you added a new namespace (i.e. multi-api version packages) or a new update, update package_service_mapping.json
accordingly.
-
Regenerate the technical documentation. Go to the
doc
folder and launch themake.bat html
. -
Trigger rebuild of readthedocs.org. This should happen as part of a push, but if not you can post using the below:
curl -X POST http://azure-sdk-for-python.readthedocs.org