Cheatsheet GitLab CI/CD — Les notions essentielles à connaître
Le dernier article de l’année est là ! Voici une cheatsheet à connaître concernant les notions fondamentales de Gitlab CI/CD.
À l’année prochaine pour d’autres articles, de bonnes fêtes à tous.
Le fichier .gitlab-ci.yml : la base
Commençons par le début, le fichier .gitlab-ci.yml, c’est le fichier que GitLab lit pour savoir quoi exécuter, dans quel ordre, et sous quelles conditions.
Structure simple :
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Building..."
En résumé :
- stages = les grandes étapes
- jobs = ce qui s’exécute
- script = les commandes à lancer
On va maintenant détailler les éléments les plus utiles.
Les stages
Les stages définissent les macro-étapes du pipeline :
- build
- test
- deploy
Voici un exemple de stages :
stages:
- build
- test
- deploy
Chaque stage est exécuté dans l’ordre, et les jobs d’un même stage tournent en parallèle.
Les jobs
Un job est un groupe de commandes à exécuter.
On peut avoir plusieurs jobs dans un même stage, on pourrait dire que les jobs correspondent à des sous étapes.
Voici un exemple de job :
test_app:
stage: test
script:
- npm install
- npm test
Les éléments les plus importants :
- stage: → à quel stage appartient ce job
- script: → les commandes
- image: → l’image Docker utilisée (optionnel)
- tags: → si tu as des runners spécifiques
C’est la brique de base de n’importe quel pipeline.
Les variables
GitLab permet d’utiliser des variables. Cela permet de factoriser notre code, de le rendre plus clair et améliorer la maintenabilité :
- Variables internes (définies par GitLab)
- Variables perso (dans Settings > CI/CD > Variables)
Exemple :
variables:
NODE_ENV: "production"
echo $NODE_ENV
Utilité pour les tokens, URLs, secrets (avec GitLab CI/CD Variables → masked), évidemment, ne jamais mettre un secret en clair.
Les rules
Depuis quelques versions, rules: est la manière recommandée pour déclencher conditionnellement un job.
Exemple simple :
rules:
- if: '$CI_COMMIT_REF_NAME == "main"'
when: always
- when: manual
- Exemple simple pour exécuter un job uniquement pour les merge requests :
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
Les only et except
Même si rules est recommandé, on trouve encore beaucoup de pipelines avec only ou except, il n’est pas rare de les croiser dans les anciens pipelines. Elles ont la même utilisation que les rules.
Exemple :
only:
- main
except:
- tags
Les “artifacts” — partager des fichiers entre jobs
Les artifacts servent à transporter des fichiers d’un job à un autre (build → test → deploy…) ou à générer et récupérer des rapports. Par exemple un job de test peut générer un rapport et le stocker dans les artifacts.
Exemple :
artifacts:
paths:
- dist/
expire_in: 1 week
Les caches
Ne pas confondre cache & artifacts.
Le cache est pour stocker des fichiers qui ne changent pas souvent (ex : node_modules), il permet d’accélérer les pipelines.
Exemple :
cache:
paths:
- node_modules/
Les templates
GitLab propose plein de templates prêts à l’emploi, utilisables via include, cela permet de ne pas ré écrire 20 fois la même chose et de se faciliter la vie.
Exemple :
include:
- template: Node.gitlab-ci.yml
Il est aussi possible d’inclure ses propres templates internes pour factoriser ses pipelines.
Voici le lien vers la documentation officielle et la liste des templates de Gitlab : GitLab CI/CD examples | GitLab Docs.
Exemple final : un pipeline prêt à l’emploi
Voici un .gitlab-ci.yml complet, simple et efficace adapté pour un projet NodeJs :
stages:
- build
- test
- deploy
variables:
NODE_ENV: production
build_job:
stage: build
script:
- npm ci
- npm run build
artifacts:
paths:
- dist/
test_job:
stage: test
script:
- npm ci
- npm test
deploy_job:
stage: deploy
script:
- echo "Deploying..."
rules:
- if: '$CI_COMMIT_REF_NAME == "main"'
Conclusion
GitLab CI/CD peut sembler complexe au début, mais en réalité, une fois qu’on comprend les briques essentielles (stages, jobs, artifacts, rules…), on peut créer des pipelines propres et puissants en quelques lignes.
Cette cheatsheet est là pour servir de guide rapide.
N’hésitez pas à l’enregistrer ou à vous en inspirer pour vos prochains projets !


Laisser un commentaire