Pipelines avances
Au-dela du pipeline lineaire de base, GitLab propose des mecanismes de composition et de decomposition des pipelines : includes, parent/child, multi-project pipelines et les matrices de jobs.
Include
Le mot-cle include permet de decomposer le .gitlab-ci.yml en plusieurs fichiers, locaux ou distants :
include:
- local: .gitlab/ci/build.yml
- local: .gitlab/ci/test.yml
- project: company/shared-ci
ref: main
file: /templates/security.yml
- remote: https://example.com/ci/template.yml
- template: Security/SAST.gitlab-ci.ymlLes templates GitLab (template:) sont des fichiers CI maintenus par GitLab dans le projet gitlab-org/gitlab. Ils couvrent SAST, DAST, dependency scanning, licence compliance, etc.
Pipelines parent/child
Un job peut declencher un pipeline enfant defini dans un autre fichier YAML. Le pipeline enfant s'execute dans le contexte du meme projet et commit :
trigger-backend:
trigger:
include: backend/.gitlab-ci.yml
strategy: depend # le pipeline parent attend la fin du childUtile pour les monorepos : un pipeline racine orchestre des sous-pipelines par composant.
Multi-project pipelines
Un pipeline peut declencher un pipeline dans un autre projet :
trigger-deployment:
trigger:
project: ops/infrastructure
branch: mainCas d'usage : le pipeline du projet applicatif declenche le pipeline d'infrastructure (Terraform, Ansible) une fois le build valide.
Matrix jobs
La directive parallel:matrix genere automatiquement plusieurs instances d'un job avec des variables differentes :
test-compatibility:
script:
- ./test.sh $PYTHON_VERSION $DB_VERSION
parallel:
matrix:
- PYTHON_VERSION: ["3.10", "3.11", "3.12"]
DB_VERSION: ["14", "15", "16"]Cela genere 9 jobs (3x3) executes en parallele. Les resultats sont groupes dans l'interface.
Trigger API et tokens
Les pipelines peuvent etre declenches depuis l'exterieur via l'API REST avec un trigger token :
curl -X POST --form token=TRIGGER_TOKEN --form ref=main --form "variables[ENV]=production" https://gitlab.example.com/api/v4/projects/PROJECT_ID/trigger/pipelineDepuis GitLab 16, les pipeline trigger tokens sont geres dans Settings > CI/CD > Pipeline triggers.