
Dans un projet réel, un pipeline ne doit pas dépendre uniquement d’un git push. Vous avez souvent besoin de lancer des tests chaque nuit, de déclencher un rebuild depuis un outil externe, ou de relancer un pipeline à la demande après une alerte monitoring. Ce lab vous montre comment faire avec les déclencheurs GitLab natifs.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Déclencher un pipeline via un schedule GitLab
- Déclencher un pipeline via API et trigger token
- Comprendre les valeurs de
$CI_PIPELINE_SOURCE - Écrire des
rulesspécifiques au type de déclenchement
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »Les équipes DevOps utilisent plusieurs sources de déclenchement selon le besoin :
- push et merge request pour la validation continue
- schedule pour les tests de régression nocturnes
- API/trigger pour orchestrer des pipelines depuis d’autres systèmes
Sans cette maîtrise, vous limitez l’automatisation et vous ratez des scénarios importants.
Prérequis
Section intitulée « Prérequis »- Lab 07 — Valider un pipeline terminé
- Avoir lu Déclencheurs de pipelines
Point de départ
Section intitulée « Point de départ »-
Basculez sur la branche du lab
Fenêtre de terminal cd pipeline-craftgit checkout starter/lab-08 -
Ouvrez le
.gitlab-ci.ymlVous allez ajouter des règles basées sur la source du pipeline.
Le problème
Section intitulée « Le problème »Actuellement, tout est piloté par les pushes. Impossible de lancer un run planifié ou externe avec des comportements différents. Vous allez créer un pipeline plus intelligent, capable de distinguer :
pushscheduletriggerapi
L’exercice
Section intitulée « L’exercice »Étape 1 — Ajouter des règles basées sur la source
Section intitulée « Étape 1 — Ajouter des règles basées sur la source »-
Ajoutez un job dédié aux runs planifiés
nightly-regression:stage: testimage: python:3.12-slimbefore_script:- pip install -r requirements-dev.txtscript:- pytest -vrules:- if: '$CI_PIPELINE_SOURCE == "schedule"' -
Ajoutez une règle explicite pour les pipelines API/trigger sur un job existant
Exemple sur
pytest:pytest:...rules:- if: '$CI_PIPELINE_SOURCE == "push"'- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'- if: '$CI_PIPELINE_SOURCE == "trigger"'- if: '$CI_PIPELINE_SOURCE == "api"'
Étape 2 — Créer un schedule dans GitLab
Section intitulée « Étape 2 — Créer un schedule dans GitLab »- Allez dans Build > Pipeline schedules
- Créez un schedule quotidien
- Choisissez la branche cible et l’horaire
GitLab évalue le cron en UTC. Si vous programmez
02:00locale, vérifiez le décalage horaire pour éviter les surprises.
Étape 3 — Déclencher via API avec trigger token
Section intitulée « Étape 3 — Déclencher via API avec trigger token »-
Générez un token dans Settings > CI/CD > Pipeline trigger tokens
-
Déclenchez depuis votre terminal
Fenêtre de terminal curl --request POST \--form token="$TRIGGER_TOKEN" \--form ref="main" \"https://gitlab.com/api/v4/projects/<project_id>/trigger/pipeline" -
Vérifiez dans GitLab que la source du pipeline est
trigger
Étape 4 — Vérifier la source dans les logs
Section intitulée « Étape 4 — Vérifier la source dans les logs »-
Ajoutez temporairement une ligne de debug dans un job
script:- echo "SOURCE=$CI_PIPELINE_SOURCE"- pytest -v -
Lancez un pipeline de chaque type et comparez les valeurs
Cette étape vous aide à valider vos règles sans ambiguïté.
Vérification
Section intitulée « Vérification »- Un schedule déclenche bien un pipeline
- Un trigger API déclenche bien un pipeline
- Les jobs s’exécutent selon la valeur de
CI_PIPELINE_SOURCE - Vous savez expliquer la différence entre trigger token et personal access token
Pièges fréquents
Section intitulée « Pièges fréquents »Le trigger token sert à déclencher un pipeline, pas à accéder à toute l’API GitLab. Le personal access token a un autre usage. Mélanger les deux est une erreur classique.
Autre point : un cron mal calé en UTC donne l’impression que le schedule ne fonctionne pas. Vérifiez toujours le fuseau horaire avant de conclure.
À retenir
Section intitulée « À retenir »- Un pipeline GitLab peut être déclenché sans push
$CI_PIPELINE_SOURCEpermet d’adapter les jobs au contexte- Schedule et API couvrent des besoins complémentaires
- Tester vos règles par source évite les surprises en production