Making roadrunner releases
Most of building the roadrunner release is handled automatically on the azure pipelines ci platform. In roadrunner we use both an experimental release, for new changes to be tested by power users before they are released to the general public in the release branch. The difference between an experimental and an actual release, in terms of source code changes, is the EXPERIMENTAL flag in the Python setup.py.
To make a release:
Push changes to develop branch in the form of a github pull request
Push the changes to the experimental-release.
If making an actual release, push changes to the release branch.
Each push to develop, experimental-release or release triggers a new CI build with that branch. If passed, you may download the artefacts as zip files by navigating to the pipeline, clicking on your specific build.
Now there are two jobs left: uploading the zip files directly to the github release, with a description on what the release contains and uploading pip wheels to pypi. The latter is done by unzipping each of the downloaded artefacts and copying the pip wheels into a new directory. Once all pip wheels are together and in a new directory you can run the command:
twine upload *
to upload all of the pip wheels in the directory.
A caveat is regarding the linux pip wheel which must be built on centos which is the common denominator for most modern linux distributions. This is handled automatically by the CI system but one must take care that the name of the pip wheel has manylinux2014 as its platform tag.
Do not try to upload pip wheels built on ubuntu to pip as this will not be accepted.