Package Registry
Le Package Registry de GitLab heberge des packages dans de nombreux formats : npm, PyPI, Maven, Gradle, NuGet, Composer, Conan, Debian, RPM, Helm, Terraform modules. C'est une alternative self-hosted aux registres publics ou aux solutions comme Nexus et Artifactory.
Formats supportes
- npm : packages Node.js
- PyPI : packages Python
- Maven / Gradle : packages Java/JVM
- NuGet : packages .NET
- Composer : packages PHP
- Generic : fichiers binaires sans format specifique (utile pour les artefacts de build)
- Helm : charts Kubernetes
- Terraform modules : modules Terraform (Protocol GitLab compatible avec le registry Terraform)
- Debian / RPM : paquets systeme (EE)
Exemple : npm
# .npmrc dans le projet
@scope:registry=https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/npm/
//gitlab.example.com/api/v4/projects/PROJECT_ID/packages/npm/:_authToken="${CI_JOB_TOKEN}"# Publication depuis un pipeline
publish-npm:
stage: package
script:
- npm publishExemple : PyPI
# ~/.pypirc ou dans le pipeline
[distutils]
index-servers = gitlab
[gitlab]
repository = https://gitlab.example.com/api/v4/projects/PROJECT_ID/packages/pypi
username = __token__
password = ${CI_JOB_TOKEN}publish-pypi:
script:
- pip install twine build
- python -m build
- twine upload --repository gitlab dist/*CI_JOB_TOKEN comme credential
La variable CI_JOB_TOKEN est un token temporaire genere pour chaque job. Elle peut authentifier les acces au Package Registry, au Container Registry et a l'API GitLab. Ce token expire a la fin du job et n'a pas besoin d'etre gere manuellement. C'est le mecanisme d'authentification recommande dans les pipelines.