Gitlab Ci
Gitlab Pipeline
Ci Cd
Devops
Yaml
Docker
Deploiement Continu
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.
Générateur de pipeline GitLab CI
📋 Projet
🏗️ Runtime
📦 Stages
💾 Cache & Artifacts
.gitlab-ci.yml
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
Questions fréquentes
Selectionnez votre langage ou framework (Node.js, Angular, Docker, Python, PHP, Java), choisissez les stages souhaites (build, test, lint, deploy) et configurez vos options (branche cible, runner, variables). L'outil genere un fichier .gitlab-ci.yml valide et documente, pret a placer a la racine de votre depot.
Les stages disponibles incluent : install (installation des dependances), lint (verification du code), test (tests unitaires et e2e), build (compilation et bundling), dockerize (construction de l'image Docker), et deploy (deploiement vers staging ou production via SSH, Kubernetes ou registry).
Le generateur peut creer un stage deploy utilisant SSH (rsync ou scp) vers votre serveur, ou un push vers un registry Docker (GitLab Registry, Docker Hub). Vous devez configurer les variables secretes CI/CD dans les settings GitLab (SSH_PRIVATE_KEY, SERVER_HOST, etc.) pour securiser vos credentials.
Oui, les pipelines generes utilisent des images Docker standards (node:18-alpine, python:3.11, php:8.2-cli) compatibles avec les runners GitLab.com partages. Pour les runners self-hosted, vous pouvez adapter l'image Docker ou utiliser le tag shell dans la configuration de votre runner.