GitLab Package Registry¶
Ihr könnt eure Verteilungspakete auch in der Paketregistrierung eures GitLab-Projekts veröffentlichen und sowohl mit Pip als auch mit twine nutzen.
Siehe auch
Authentifizierung¶
Zur Authentifizierung an der GitLab Package Registry könnt ihr eine der folgenden Methoden verwenden:
Ein persönliches Zugriffstoken mit dem Geltungsbereich
api
.Ein Deploy-Token mit den Geltungsbereichen
read_package_registry
,write_package_registry
oder beiden.Ein CI-Job-Token.
… mit einem persönlichen Zugriffstoken¶
Um euch mit einem persönlichen Zugriffstoken zu authentifizieren, könnt ihr in
der ~/.pypirc
-Datei z.B. folgendes hinzufügen:
[distutils]
index-servers=
gitlab
[gitlab]
repository = https://ce.cusy.io/api/v4/projects/{PROJECT_ID}/packages/pypi
username = {NAME}
password = {YOUR_PERSONAL_ACCESS_TOKEN}
… mit einem Deploy-Token¶
[distutils]
index-servers =
gitlab
[gitlab]
repository = https://ce.cusy.io/api/v4/projects/{PROJECT_ID}/packages/pypi
username = {DEPLOY_TOKEN_USERNAME}
password = {DEPLOY_TOKEN}
… mit einem Job-Token¶
image: python:latest
run:
script:
- pip install build twine
- python -m build
- TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
… für den Zugriff auf Pakete innerhalb einer Gruppe¶
Verwendet statt der PROJECT_ID
die GROUP_URL
.
Veröffentlichen des Verteilungspakets¶
Ihr könnt euer Paket mit Hilfe von twine veröffentlichen:
python3 -m twine upload --repository gitlab dist/*
Bemerkung
Wenn ihr versucht, ein Paket zu veröffentlichen, das bereits mit demselben
Namen und derselben Version existiert, erhaltet ihr den Fehler 400 Bad
Request
; ihr müssen das vorhandene Paket dann zuerst löschen.
Installieren des Pakets¶
Ihr könnt die neueste Version eures Pakets installieren z.B. mit
pip install --index-url https://{NAME}:{PERSONAL_ACCESS_TOKEN}@ce.cusy.io/api/v4/projects/{PROJECT_ID}/packages/pypi/simple --no-deps {PACKAGE_NAME}
… oder von der Gruppenebene aus mit
pip install --index-url https://{NAME}:{PERSONAL_ACCESS_TOKEN}@ce.cusy.io/api/v4/groups/{GROUP_ID}/-/packages/pypi/simple --no-deps {PACKAGE_NAME}
… oder in der requirements.txt
-Datei mit
--extra-index-url https://ce.cusy.io/api/v4/projects/{PROJECT_ID}/packages/pypi/simple {PACKAGE_NAME}