Passer au contenu principal

CI/CD (GitLab)

Introduction aux pipelines CI/CD

La CI/CD GitLab est declenchee par des evenements sur le depot : push, merge request, tag, schedule, trigger API. Le pipeline est l'unite d'execution : un graphe oriente de stages et de jobs defini dans .gitlab-ci.yml a la racine du projet.

Modele d'execution

Un pipeline contient des stages (phases) executes en sequence. A l'interieur d'un stage, les jobs s'executent en parallele. Si un job echoue, les jobs du meme stage continuent, mais les stages suivants sont bloques (sauf configuration contraire).

Les jobs s'executent sur des runners, processus exterieurs a GitLab. Un runner recoit les jobs via l'API GitLab, les execute dans un environnement isole (shell, Docker, Kubernetes) et reporte les resultats.

Types de pipelines

  • Branch pipeline : declenche sur un push vers une branche
  • MR pipeline : declenche sur les evenements MR (ouverture, mise a jour, approbation)
  • Merged result pipeline : simule le merge et teste le resultat projete
  • Scheduled pipeline : execution a heures fixes (cron expression)
  • Tag pipeline : declenche sur la creation d'un tag Git
  • Child/parent pipeline : un pipeline peut en declencher d'autres
  • Multi-project pipeline : un job peut declencher un pipeline dans un autre projet

Deduplication et skip

GitLab detecte les pipelines redondants : si plusieurs pushes arrivent rapidement, seul le dernier pipeline est execute (les precedents sont annules automatiquement si l'option est activee). Le skip de pipeline est possible en ajoutant [skip ci] ou [ci skip] dans le message de commit.

DAG - Directed Acyclic Graph

Par defaut, les stages s'executent en sequence. Avec le mot-cle needs, un job peut declarer ses dependances directes et demarrer des qu'elles sont terminees, sans attendre la fin du stage entier. Cela permet de construire un DAG d'execution et de reduire significativement la duree des pipelines complexes.

Sources