Merged results pipelines (PREMIUM)

A merged results pipeline is a type of merge request pipeline. It is a pipeline that runs against the results of the source and target branches merged together.

GitLab creates an internal commit with the merged results, so the pipeline can run against it. This commit does not exist in either branch, but you can view it in the pipeline details. The author of the internal commit is always the user that created the merge request.

The pipeline runs against the target branch as it exists at the moment you run the pipeline. Over time, while you're working in the source branch, the target branch might change. Any time you want to be sure the merged results are accurate, you should re-run the pipeline.

Merged results pipelines can't run when the target branch has changes that conflict with the changes in the source branch.

In these cases, the pipeline runs as a merge request pipeline and is labeled as merge request.

Prerequisites

To use merged results pipelines:

Enable merged results pipelines

To enable merged results pipelines in a project, you must have at least the Maintainer role:

  1. On the top bar, select Main menu > Projects and find your project.
  2. On the left sidebar, select Settings > Merge requests.
  3. In the Merge options section, select Enable merged results pipelines.
  4. Select Save changes.

WARNING: If you select the checkbox but don't configure your pipeline to use merge request pipelines, your merge requests may become stuck in an unresolved state or your pipelines may be dropped.

Troubleshooting

Merged results pipelines are not created

In GitLab 13.7 and earlier, merged results pipelines might not be created due to a disabled feature flag. This feature flag was removed in GitLab 13.8. Upgrade to 13.8 or later, or make sure the :merge_ref_auto_sync feature flag is enabled on your GitLab instance.

Pipelines fail intermittently with a fatal: reference is not a tree: error

Merged results pipelines run on a merge ref for a merge request (refs/merge-requests/<iid>/merge), so the Git reference could be overwritten at an unexpected time.

For example, when a source or target branch is advanced, the pipeline fails with the fatal: reference is not a tree: error, which indicates that the checkout-SHA is not found in the merge ref.

This behavior was improved in GitLab 12.4 by introducing persistent pipeline refs. Upgrade to GitLab 12.4 or later to resolve the problem.

Successful merged results pipeline overrides a failed branch pipeline

A failed branch pipeline is sometimes ignored when the Pipelines must succeed setting is activated. Issue 385841 is open to track this.