Gitlab run Pipeline if file changed AND its a merge request?

Viewed 17

I am trying to build a monorepo with two independent build pipelines. Ideally, they should only run IF files in the projects have changed. Unfortunately, the both get triggered always and I do not understand why.

My idea is basically:

  • run a pipeline: if we are in a merge request AND files relevant to that pipeline have changed
  • run a pipeline if we are on the develop or release branch because we want the artifacts

my .gitlab-ci.yml:

projectA:
  trigger:
    include: gitlab/ci-projectA.yml
    strategy: depend # fail if the projectAbuild fails
  rules:
    # we want to run this pipeline IF it's a merge request event AND something changed in the relevant filer OR when its on develop OR release branch
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
      changes:
        paths:
          - projectA.sln
          - projectA/**/*
          - gitlab/ci-projectA.yml
          - .gitlab-ci.yml
      when: on_success
    - if: $CI_COMMIT_REF_NAME == "release"
      when: on_success
    - if: $CI_COMMIT_REF_NAME == "develop"
      when: on_success
    - when: never
    
project:
  trigger:
    include: gitlab/ci-projectB.yml
    strategy: depend # fail if the projectBbuild fails
  rules:
    # we want to run this pipeline IF it's a merge request event AND something changed in the relevant filer OR when its on develop OR release branch
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
      changes:
        paths:
          - projectB.sln
          - projectB/**/*
          - gitlab/ci-projectB.yml
          - .gitlab-ci.yml
      when: on_success
    - if: $CI_COMMIT_REF_NAME == "release"
      when: on_success
    - if: $CI_COMMIT_REF_NAME == "develop"
      when: on_success
    - when: never
      
0 Answers
Related