gitlab-cipipelinegitlab-pipelines

Gitlab master branch pipeline is not running after merge


I have the following the .gitlab-ci.yml:

stages:
  - build

workflow:
  rules:
    - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
      variables:
        ENVIRONMENT_TYPE: 'prod'
    - if: $CI_COMMIT_REF_PROTECTED == 'true' && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
      variables:
        ENVIRONMENT_TYPE: 'preprod'
    - if: $CI_COMMIT_REF_PROTECTED == 'false'
      variables:
        ENVIRONMENT_TYPE: 'review'
    - if: $CI_MERGE_REQUEST_ID
      when: never
Compile:
  stage: build
  image: node
  only:
    - branches
  script:
    - yarn install
    - yarn build

and if my branch is feature/xyz, and I push, it runs the pipeline which is wanted. but if I merge, the pipeline won't run on master branch.

I added:

    - if: $CI_MERGE_REQUEST_ID
      when: never

Because if I push to my normal branch, it will run 2 pipelines rather one (a detached pipeline is introduced).

Can someone pelase help what am I missing?


Solution

  • After more investigations, it turns out that there was nothing wrong with the .gitlab-ci.yml I posted in the question.

    It was all perfect.

    It turns out that I had AUTO_STOP: 0 environment variable in one of the workflows which was preventing the pipeline from running. (undocumented variable https://docs.gitlab.com/search/?query=AUTO_STOP )

    I was able to reproduce this, and I reported this as an issue https://gitlab.com/gitlab-org/gitlab/-/issues/341713. Here is the reproduced merge https://gitlab.com/adham.sabry/pipeline-test/-/merge_requests/5 where the protected branch did not have pipeline to start.

    I hope this helps and no one stumbles across this.