image de chargement
Retour au glossaire

GitLab CI/CD

Plateforme DevOps complète intégrant gestion de code, intégration continue et déploiement automatisé dans un outil unifié.

Mis à jour le 19 janvier 2026

GitLab CI/CD est une solution DevOps tout-en-un qui combine un système de gestion de versions Git avec des capacités d'intégration continue et de déploiement continu. Contrairement aux solutions nécessitant plusieurs outils, GitLab offre une expérience unifiée depuis le code jusqu'à la production. Cette approche intégrée réduit la complexité opérationnelle et améliore la traçabilité sur l'ensemble du cycle de vie logiciel.

Fondements de GitLab CI/CD

  • Pipeline as Code : configuration déclarative via fichier .gitlab-ci.yml versionné avec le code source
  • Runners distribués : agents d'exécution pouvant fonctionner sur diverses infrastructures (cloud, on-premise, Kubernetes)
  • Architecture modulaire : stages, jobs et artéfacts permettant de structurer les workflows complexes
  • Intégration native : gestion des dépôts, issues, merge requests et CI/CD dans une même interface

Avantages stratégiques

  • Visibilité complète du cycle DevOps depuis la planification jusqu'au monitoring post-déploiement
  • Réduction des coûts d'infrastructure grâce à la mise en cache intelligente et au partage de runners
  • Sécurité intégrée avec analyse de vulnérabilités, conformité et gestion des secrets natives
  • Scalabilité horizontale permettant de gérer des milliers de pipelines simultanés
  • Auto DevOps : templates préconfigurés pour déployer automatiquement sans configuration manuelle
  • Conformité et audit : traçabilité complète des déploiements et des changements de code

Exemple de pipeline GitLab CI/CD

.gitlab-ci.yml
stages:
  - build
  - test
  - security
  - deploy

variables:
  DOCKER_DRIVER: overlay2
  NODE_ENV: production

# Template pour éviter la répétition
.node-template: &node-template
  image: node:18-alpine
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
      - node_modules/
  before_script:
    - npm ci --prefer-offline

build:app:
  <<: *node-template
  stage: build
  script:
    - npm run build
    - npm run lint
  artifacts:
    paths:
      - dist/
    expire_in: 1 week
  only:
    - merge_requests
    - main

test:unit:
  <<: *node-template
  stage: test
  coverage: '/Statements\s*:\s*(\d+\.\d+)%/'
  script:
    - npm run test:coverage
  artifacts:
    reports:
      coverage_report:
        coverage_format: cobertura
        path: coverage/cobertura-coverage.xml

security:sast:
  stage: security
  image: returntocorp/semgrep
  script:
    - semgrep --config=auto --json -o sast-report.json
  artifacts:
    reports:
      sast: sast-report.json
  allow_failure: true

deploy:staging:
  stage: deploy
  image: alpine:latest
  before_script:
    - apk add --no-cache curl
  script:
    - |
      curl -X POST "$DEPLOY_WEBHOOK_URL" \
        -H "Authorization: Bearer $DEPLOY_TOKEN" \
        -d "{\"environment\":\"staging\",\"version\":\"$CI_COMMIT_SHA\"}"
  environment:
    name: staging
    url: https://staging.example.com
    on_stop: stop:staging
  only:
    - main

stop:staging:
  stage: deploy
  script:
    - echo "Stopping staging environment"
  when: manual
  environment:
    name: staging
    action: stop

deploy:production:
  stage: deploy
  extends: deploy:staging
  script:
    - |
      curl -X POST "$DEPLOY_WEBHOOK_URL" \
        -H "Authorization: Bearer $DEPLOY_TOKEN" \
        -d "{\"environment\":\"production\",\"version\":\"$CI_COMMIT_SHA\"}"
  environment:
    name: production
    url: https://example.com
  only:
    - tags
  when: manual

Mise en œuvre structurée

  1. Installer et configurer GitLab Runner (Docker, Kubernetes, ou shell executor selon l'infrastructure)
  2. Créer le fichier .gitlab-ci.yml à la racine du projet avec la définition des stages et jobs
  3. Configurer les variables CI/CD (Settings > CI/CD > Variables) pour stocker secrets et configuration
  4. Définir les environnements et leurs URLs dans la section Deployments pour activer le suivi
  5. Implémenter les merge request pipelines pour valider le code avant fusion
  6. Configurer les règles de protection des branches et les approbations requises
  7. Activer les fonctionnalités de sécurité (SAST, DAST, dependency scanning) via templates
  8. Mettre en place le monitoring avec intégration Prometheus/Grafana pour suivre les métriques

Optimisation des performances

Utilisez les GitLab Runner tags pour router les jobs vers des runners spécialisés (GPU, haute mémoire) et activez la mise en cache distribuée via object storage (S3, GCS) pour réduire le temps de build jusqu'à 70%. Les templates include permettent de factoriser la configuration et maintenir la cohérence entre projets.

Écosystème et intégrations

  • Kubernetes : déploiement natif avec Auto DevOps et intégration cluster
  • Terraform : provisioning d'infrastructure avec état stocké dans GitLab
  • Jira/ServiceNow : synchronisation bidirectionnelle des issues et incidents
  • Slack/Teams : notifications en temps réel sur l'état des pipelines
  • HashiCorp Vault : gestion centralisée des secrets avec rotation automatique
  • Prometheus/Grafana : métriques CI/CD et observabilité des déploiements
  • Trivy/Snyk : analyse de vulnérabilités des conteneurs et dépendances

GitLab CI/CD transforme la vélocité des équipes en éliminant les silos entre développement et opérations. L'approche tout-en-un réduit les coûts de licence et de formation tout en améliorant la collaboration grâce à la visibilité unifiée. Les grandes entreprises apprécient particulièrement les fonctionnalités de compliance, l'auto-hébergement pour la souveraineté des données, et la scalabilité éprouvée sur des milliers de projets simultanés.

L'argentestdéjàsurlatable.

En 1 heure, découvrez exactement combien vous perdez et comment le récupérer.