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.

Authentifizierung

Zur Authentifizierung an der GitLab Package Registry könnt ihr eine der folgenden Methoden verwenden:

… 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}