GitLab Container Registry
Chaque projet GitLab dispose d'un registre Docker integre pour stocker vos images.
Construire et pousser une image
# Se connecter au registre
docker login registry.gitlab.com
# Construire l'image
docker build -t registry.gitlab.com/username/mon-projet:latest .
# Pousser l'image
docker push registry.gitlab.com/username/mon-projet:latest
# Tirer l'image
docker pull registry.gitlab.com/username/mon-projet:latest
Dans le pipeline CI/CD
build-image:
stage: build
image: docker:latest
services:
- docker:dind
variables:
DOCKER_TLS_CERTDIR: "/certs"
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker build -t $CI_REGISTRY_IMAGE:latest .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE:latest
GitLab Package Registry
GitLab supporte plusieurs types de packages : npm, pip, Maven, NuGet, etc.
Publier un package npm
# .npmrc
@scope:registry=https://gitlab.com/api/v4/projects/PROJECT_ID/packages/npm/
//gitlab.com/api/v4/projects/PROJECT_ID/packages/npm/:_authToken=${CI_JOB_TOKEN}
publish-npm:
stage: deploy
script:
- echo "@scope:registry=https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/" > .npmrc
- npm publish
Publier un package Python (pip)
publish-pip:
stage: deploy
image: python:3.11
script:
- pip install twine
- python setup.py sdist bdist_wheel
- TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token
twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
Avantage : Le Container Registry et le Package Registry sont gratuits et integres a chaque projet GitLab.