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_registryoder 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
- name: Setup cached uv
uses: hynek/setup-cached-uv@v2
- name: Create venv and install twine
run: |
uv venv
echo "$PWD/.venv/bin" >> $GITHUB_PATH
uv add --upgrade twine
- name: Build
run: |
uv build
- name: Retrieve and publish
- 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:
$ uv run twine upload -r 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üsst das vorhandene Paket dann zuerst löschen.
Installieren des Pakets¶
Ihr könnt die neueste Version eures Pakets installieren z.B. mit
uv add -i 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
uv add -i https://{NAME}:{PERSONAL_ACCESS_TOKEN}@ce.cusy.io/api/v4/groups/{GROUP_ID}/-/packages/pypi/simple --no-deps {PACKAGE_NAME}
… oder in der pyproject.toml-Datei mit:
[tool.uv]
extra-index-url = ["https://ce.cusy.io/api/v4/projects/{PROJECT_ID}/packages/pypi/simple {PACKAGE_NAME}"]