Aller au contenu
CI/CD & Automatisation medium

Lab 08 — Déclencher un pipeline

5 min de lecture

logo gitlab

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.

  • 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 rules spécifiques au type de déclenchement

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.

  1. Basculez sur la branche du lab

    Fenêtre de terminal
    cd pipeline-craft
    git checkout starter/lab-08
  2. Ouvrez le .gitlab-ci.yml

    Vous allez ajouter des règles basées sur la source du pipeline.

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 :

  • push
  • schedule
  • trigger
  • api

É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 »
  1. Ajoutez un job dédié aux runs planifiés

    nightly-regression:
    stage: test
    image: python:3.12-slim
    before_script:
    - pip install -r requirements-dev.txt
    script:
    - pytest -v
    rules:
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
  2. 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"'
  1. Allez dans Build > Pipeline schedules
  2. Créez un schedule quotidien
  3. Choisissez la branche cible et l’horaire GitLab évalue le cron en UTC. Si vous programmez 02:00 locale, 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 »
  1. Générez un token dans Settings > CI/CD > Pipeline trigger tokens

  2. 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"
  3. Vérifiez dans GitLab que la source du pipeline est trigger

  1. Ajoutez temporairement une ligne de debug dans un job

    script:
    - echo "SOURCE=$CI_PIPELINE_SOURCE"
    - pytest -v
  2. Lancez un pipeline de chaque type et comparez les valeurs

    Cette étape vous aide à valider vos règles sans ambiguïté.

  • 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

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.

  • Un pipeline GitLab peut être déclenché sans push
  • $CI_PIPELINE_SOURCE permet 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

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn