-
Notifications
You must be signed in to change notification settings - Fork 46
How to make a release
Since 0.10.0 (PR #248) the publishing is automatic (see packing action), so there is just a couple of things have left that you should do manually.
- Change
Unreleasedto new version inCHANGELOG.md(example: PR #258). - Write release notes into
debian/changelogfile (example: PR #258). - Merge these changes to the master branch.
- Create and push an annotated tag:
git tag -a --cleanup verbatim X.Y.Zand place release notes into the tag annotation. - Wait until the packing action succeeds.
- Create GitHub release from the tag.
- Share the news in the community and team chats!
The guide below was used for manual deploy before 0.10.0. There are many useful tips there, so I leave it as is, just don't treat it as step-by-step guide for latest versions release.
-
Write release notes based on unreleased changes in
CHANGELOG.md.- Suggested sections are 'Overview', 'Breaking changes', 'New features', 'Bugfixes', 'Other'.
- Features and bugfixes are about what a user can feel. Move code health activities such as improving testing or CI into its own section or 'Other' section.
- Follow our style recommendations.
- Ask a teammate to take a second glance.
-
Open a pull request with the version update.
- Bump version in
CHANGELOG.md. Add a new 'Unreleased' section. - Add an entry into
debian/changelogfile. - Change
Versionfield inrpm/tarantool-python.specfile. - Change
__version__variable intarantool/__init__.pyfile.
- Bump version in
-
Build, upload to test.pypi.org, verify.
-
Register on https://test.pypi.org/account/register/ to proceed with the next steps.
-
Invoke
python setup.py sdistto createdist/tarantool-X.Y.Z.tar.gz. -
Install
wheelpackage for Python. -
Invoke
python setup.py bdist_wheelto createdist/tarantool-X.Y.Z-py3-none-any.whl. -
Verify it:
twine check dist/*. -
Perform a test upload and verify it:
$ twine upload -r testpypi dist/* $ virtualenv -p python3.10 ~/.env-3.10-test-tarantool-python $ . ~/.env-3.10-test-tarantool-python/bin/activate $ pip install --index-url https://test.pypi.org/simple tarantool $ tarantool foo.lua $ python >>> import tarantool >>> <..test something..>
-
-
Get the pull request merged. Pull the fresh
master. -
Tag a release on GitHub.
- Create an annotated tag:
git tag -a --cleanup verbatim X.Y.Z. Place release notes into the tag annotation. - Push the tag:
git push --tags.
- Create an annotated tag:
-
Create a release on GitHub: https://github.com/tarantool/tarantool-python/releases.
-
Build and upload the release to PyPI.
- Register on https://pypi.org/account/register/ to proceed with the next steps.
- Clean everything in the repository just in case:
git clean -xffd. - Invoke
python setup.py sdistto createdist/tarantool-X.Y.Z.tar.gz. - Invoke
python setup.py bdist_wheelto createdist/tarantool-X.Y.Z-py3-none-any.whl. - Verify it:
twine check dist/*. - Upload to PyPI:
twine upload dist/*.
-
Verify the release:
$ cd $(mktemp -d) $ tarantool -e "box.cfg{listen = 3301} box.schema.user.grant('guest', 'super')" -i
$ virtualenv -p python3.10 ~/.env-3.10-test-tarantool-python-release $ . ~/.env-3.10-test-tarantool-python-release/bin/activate $ pip install tarantool <..is the fresh version installed?..> $ python >>> import tarantool >>> c = tarantool.connect('localhost', 3301) >>> c.call('box.info')