Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is gitlab run duplicate pipelines on commit?

I have the following content of the .gitlab-ci.yml job:

stages:
  - stage1
  - stage2


job1:
  stage: stage1
  script:
    - echo "Running default stage1, pipeline_source=$CI_PIPELINE_SOURCE"

job2:
  stage: stage2
  rules:
    - if: $CI_PIPELINE_SOURCE == "push"
    - when: always
  script:
    - echo "Running STAGE2!   pipeline_source=$CI_PIPELINE_SOURCE"

when I commit this change to a merge-request branch, it seems two pipelines are being started.

Is this a known issue in gitlab? Or do I understand something wrong here?

like image 370
Alex Avatar asked Feb 04 '26 06:02

Alex


1 Answers

GitLab creates pipelines both for your branch and for the merge request. This is an "expected"[1] feature of GitLab as a consequence of using rules:. (oddly enough, when using only/except, merge request pipelines will only happen when using only: - merge_requests).

If you simply want to disable the 'pipelines for merge requests' and only run branch pipelines, you can include the default branch pipelines template, which provides a workflow: that prevents pipelines for merge requests.

include:
  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'

Note: as of GitLab 17.0, workflow rules templates are deprecated and are planned for removal in GitLab 18.

Additionally, you can see this answer for a workflow that will prevent duplicates between the pipelines for merge requests and branch pipelines only when a merge request is open.


[1]: I've always found this to be a quirk of GitLab and, as an administrator of GitLab for hundreds of users, I've gotten this question many many times. So, you're not alone in being surprised by this 'expected feature'

like image 77
sytech Avatar answered Feb 06 '26 11:02

sytech



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!