Skip to content

Latest commit

 

History

History
130 lines (99 loc) · 3.05 KB

05.Type_Pipeline.md

File metadata and controls

130 lines (99 loc) · 3.05 KB

Les Architectures de pipelines

Documentation GitLab : Pipeline Architectures

Il existe 3 types d'architectures :

  • Basic pipelines
  • Direct Acyclic Graph (DAG) pipelines
  • Parent/enfants pipelines : place à votre imagination...

BASIC PIPELINE

Il s'agit de l'architecture la plus commune.

	Etapes		Stage1		Stage2		Stage3
	
	Jobs
			Job1		Job3		Job5
			Job2		Job4		Job6

Basic Pipeline

Exemple :

stages:
  - stage1
  - stage2
job1:
  stage: stage1
  script:
    - echo "stage1 - job1"
job2:
  stage: stage1
  script:
    - echo "stage1 - job2"

Direct Acyclic Graph (DAG) pipelines

  • Ce modèle utilise un graphe acyclique dirigé (DAG) pour représenter les dépendances entre les jobs.
  • Les jobs s'exécutent dans l'ordre défini, mais les stages peuvent être exécutées en parallèle.
  • needs: [job1] indique que le job2 dépend du job1.

image


Exemple :

stages:
  - stage1
  - stage2
job1:
  stage: stage1
  script:
    - echo "stage1 - job1"
    - exit 0
  tags:
    - docker
job4:
  stage: stage1
  tags:
    - docker
  script:
    - echo "stage1 - job4"
job2:
  stage: stage2
  tags:
    - docker
  needs: [job1]
  script:
    - echo "stage2 - job2"
job5:
  stage: stage2
  tags:
    - docker
  needs: [job4]
  script:
    - echo "stage2 - job5"

PARENT/ENFANTS PIPELINE

  • Découper en différents fichiers .gitlab-ci
  • Gestion de déclenchement suivant des répertoires spécifiques
  • Gestion de blocs
  • Solution efficace pour le monorepo

Pipeline :

		caseA : stage1	stage2	stage3
		caseB : stage21	stage22	stage23

Exemple :

trigger-ui:
  trigger:
    include: ui/.gitlab-ci.yml
    strategy: depend

trigger-backend:
  trigger:
    include: backend/.gitlab-ci.yml
    strategy: depend

Strategy: depend permet d'affecter le pipeline parent. Par exemple si un des pipelines enfants ne s'execute pas correctement, le pipeline parent sera stoppé.


Exercice :

  • Créer un pipeline avec 2 pipelines enfants, ui et backend.
  • Faire un echo.