Gitlab Ci
Gitlab Pipeline
Ci Cd
Devops
Yaml
Docker
Déploiement Continu
Générateur de pipeline GitLab CI
📋 Projet
🏗️ Runtime
📦 Stages
💾 Cache & Artifacts
Réutilisé entre les pipelines
Partagés entre stages
.gitlab-ci.yml
Générez un fichier .gitlab-ci.yml complet avec stages, cache, artifacts, Docker Registry et déploiement SSH/S3/Kubernetes. Supporte Node.js, Python, PHP, Go et Java.
GitLab CI : principes
GitLab CI/CD est le système d'intégration et de déploiement continu intégré à GitLab. Il se configure via un fichier .gitlab-ci.yml à la racine du dépôt.
| Concept | Description |
|---|---|
| Pipeline | Ensemble de stages déclenchés par un push ou MR |
| Stage | Groupe de jobs qui s'exécutent en parallèle |
| Job | Unité d'exécution — script + image Docker |
| Runner | Agent d'exécution (partagé GitLab ou privé) |
| Artifact | Fichier produit par un job, partagé entre stages |
| Cache | Fichiers mis en cache entre les pipelines |
Structure du .gitlab-ci.yml
# Définir les stages dans l'ordre d'exécution
stages:
- install
- test
- build
- deploy
# Image Docker par défaut pour tous les jobs
default:
image: node:20-alpine
# Variables globales
variables:
NODE_ENV: "production"
# Template réutilisable
.base-rules: &base-rules
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
Stages et jobs
install:dependencies:
stage: install
script:
- npm ci
cache:
key: $CI_COMMIT_REF_SLUG
paths:
- node_modules/
policy: push
test:unit:
stage: test
script:
- npm test
cache:
key: $CI_COMMIT_REF_SLUG
paths:
- node_modules/
policy: pull # ne met pas à jour le cache
build:app:
stage: build
script:
- npm run build
artifacts:
paths:
- dist/
expire_in: 1 hour
Cache et artifacts
| Fonctionnalité | Cache | Artifacts |
|---|---|---|
| Objectif | Accélérer les pipelines (node_modules…) | Passer des fichiers entre jobs |
| Persistance | Entre pipelines (key) | Dans le pipeline courant |
| Usage typique | Dépendances | dist/, coverage/, .jar |
| Expiration | Configurable | expire_in: 1 hour |
Astuce : utilisez
policy: pull dans les jobs qui ne modifient pas le cache — cela évite de le re-uploader inutilement.
Variables CI/CD
Définissez vos secrets dans Settings → CI/CD → Variables. GitLab masque automatiquement les variables marquées "Masked" dans les logs.
| Variable prédéfinie | Description |
|---|---|
$CI_COMMIT_REF_SLUG | Branche normalisée (tirets) |
$CI_COMMIT_SHA | Hash du commit |
$CI_REGISTRY | URL du registre GitLab |
$CI_REGISTRY_IMAGE | Image du projet courant |
$CI_REGISTRY_USER | Utilisateur pour login registry |
$CI_REGISTRY_PASSWORD | Token d'accès registry |
$CI_PROJECT_NAME | Nom du projet GitLab |
$CI_ENVIRONMENT_NAME | Nom de l'environnement déployé |
Bonnes pratiques
- ✅ Utiliser des templates YAML (
&et*) pour éviter la duplication - ✅ Séparer les policies du cache :
pushdans le job d'install,pullailleurs - ✅ Utiliser
rules:à la place deonly:/except:(déprécié) - ✅ Épingler les versions des images Docker :
node:20-alpine, pasnode:latest - ✅ Activer le déploiement manuel en production avec
when: manual - ✅ Définir des environnements (
environment: name: production) pour le suivi des déploiements - ✅ Utiliser
interruptible: truesur les jobs CI pour libérer les runners lors d'un force push