doc-locale/fr-fr/ci/pipelines/merge_request_pipelines.md
{{< details >}}
{{< /details >}}
Vous pouvez configurer votre pipeline pour qu'il s'exécute chaque fois que vous apportez des modifications à la branche source dans un merge request. Ce type de pipeline est appelé pipeline de merge request.
Ces pipelines s'exécutent lorsque vous :
Les pipelines de merge request :
merge request dans les listes de pipelines.Pour exécuter un pipeline qui teste le résultat de la fusion des branches source et cible, utilisez les pipelines de résultats fusionnés.
Pour utiliser les pipelines de merge request :
.gitlab-ci.yml de votre projet doit inclure des règles de job ou des règles de workflow correspondant à CI_PIPELINE_SOURCE == "merge_request_event".Pour configurer les pipelines de merge request, vous devez configurer les jobs dans votre fichier .gitlab-ci.yml pour qu'ils s'exécutent lorsque CI_PIPELINE_SOURCE est égal à merge_request_event.
[!note] Les règles définies dans
include:(par exemple, avecinclude:component) ne satisfont pas à cette exigence. Vous devez définir desrules:ouworkflow: rulescorrespondants directement dans.gitlab-ci.yml.
Vous pouvez configurer des jobs individuels avec rules, ou utiliser workflow: rules pour contrôler l'ensemble du pipeline.
Utilisez le mot-clé rules pour configurer des jobs individuels à exécuter dans les pipelines de merge request. Par exemple :
job1:
script:
- echo "This job runs in merge request pipelines"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
Vous pouvez également contrôler le moment où les jobs s'exécutent en fonction des modifications de fichiers :
test:
script:
- echo "This job always runs in merge request pipelines"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
lint:
script:
- echo "This job runs only when JavaScript files change"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
- "*.js"
Utilisez le mot-clé workflow: rules pour configurer tous les jobs d'un pipeline à exécuter dans les pipelines de merge request. Par exemple :
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
job1:
script:
- echo "This job runs in merge request pipelines"
Pour plus d'exemples sur workflow, consultez :
Pour utiliser les outils d'analyse de sécurité avec les pipelines de merge request, utilisez la variable CI/CD AST_ENABLE_MR_PIPELINES ou l'édition de template latest.
{{< history >}}
{{< /history >}}
Si votre fichier .gitlab-ci.yml définit des entrées de pipeline, vous pouvez personnaliser les valeurs d'entrée lorsque vous exécutez manuellement un nouveau pipeline de merge request. Vous pouvez également définir des variables CI/CD dans le même formulaire.
Prérequis :
.gitlab-ci.yml doit être configuré pour les pipelines de merge request..gitlab-ci.yml doit également définir une section spec: inputs.Pour exécuter un pipeline de merge request avec des entrées personnalisées :
Les contributeurs externes qui travaillent dans des duplications ne peuvent pas créer de pipelines dans le projet parent.
Un merge request issu d'une duplication soumis au projet parent déclenche un pipeline qui :
Les pipelines des duplications s'affichent avec le badge bifurcation dans le projet parent.
Les membres du projet parent peuvent déclencher un pipeline de merge request pour un merge request soumis depuis un projet dupliqué. Ce pipeline :
Exécutez des pipelines dans les MR du projet dupliqué pour vous assurer que le pipeline post-fusion réussit dans le projet parent. De plus, si vous ne faites pas confiance au runner du projet dupliqué, l'exécution du pipeline dans le projet parent utilise les runners de confiance du projet parent.
[!warning] Les merge requests issus de duplications peuvent contenir du code malveillant qui tente de voler des secrets dans le projet parent lors de l'exécution du pipeline, même avant la fusion. En tant que relecteur, vérifiez soigneusement les modifications du merge request avant de déclencher le pipeline. Sauf si vous déclenchez le pipeline via l'API ou l'action rapide
/rebase, GitLab affiche un avertissement que vous devez accepter avant l'exécution du pipeline. Dans le cas contraire, no warning displays.
Prérequis :
.gitlab-ci.yml du projet parent doit être configuré pour exécuter des jobs dans les pipelines de merge request.Pour utiliser l'interface utilisateur afin d'exécuter un pipeline dans le projet parent pour un merge request issu d'un projet dupliqué :
Pour empêcher les utilisateurs d'exécuter de nouveaux pipelines pour des projets dupliqués dans le projet parent, utilisez l'API des projets pour désactiver le paramètre ci_allow_fork_pipelines_to_run_in_parent_project.
[!warning] Les pipelines créés avant la désactivation du paramètre ne sont pas concernés et continuent de s'exécuter. Si vous réexécutez un job dans un pipeline plus ancien, le job utilise le même contexte que lors de la création initiale du pipeline.
Lorsque vous utilisez des pipelines de merge request, vous pouvez utiliser :
{{< history >}}
{{< /history >}}
Vous pouvez contrôler l'accès aux variables CI/CD protégées et aux runners protégés depuis les pipelines de merge request.
Les pipelines de merge request ne peuvent accéder à ces ressources protégées que lorsque :
Les pipelines de merge request issus de dépôts dupliqués ne peuvent pas accéder à ces ressources protégées.
Prérequis :
Pour contrôler l'accès aux variables protégées et aux runners protégés :