PyPi: Support package upload
Implement PyPI package upload via the twine tool.
Details
Upload is performed using the Legacy API using a multipart/form-data POST request. Details on the fields sent can be found on the referred docs.
The upload process usually involves pushing 2 files, the raw source tar.gz data and the build distribution file .whl. Each file is pushed as an independent POST request.
Sample push command:
python3 -m twine upload --repository testpypi dist/*
Entry points
POST gitlab.com/api/v4/projects/:id/packages/pypi: The upload entry point for twine.
PUT gitlab.com/api/v4/projects/:id/packages/pypi/authorize: Internal authentication entry point for workhorse.
Authentication
Needs to support Authentication via basic HTTP auth to allow for either CI tokens or PAT.
See #34161 (closed) for full discussion.
Edited by Giorgenes Gelatti