Passer au contenu principal

Conteneurs et Registres (GitLab)

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 publish

Exemple : 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.

Sources