Gitlab merge request for CICD pipeline

Hello Team,

Please suggest me the rule condition for CICD pipeline trigger only though merge request only not through branch updates.

Currently I have applied the below condition…

if: $CI_PIPELINE_SOURCE == PUSH && $CI_COMMIT_BRANCH == :branch name
: event for pipeline trigger.

I want some additional condition to avoid pipeline trigger through branch file updates.

My expectation: pipeline should trigger only from merge requests not from any event is happening at branch.

Below solutions , i tried for the above case but its not working

  1. CI_MERGE_REUEST_ predefined parameters.
  2. only : - merge_requests

Please suggest any solution for the above mentioned issue that is really helping me.


Hi @komalbokariya

  - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

You can see available values in here

Hello GitLab Team,

This value is getting populated when merge request is open. I want to trigger CICD pipeline when merge event completed.

Please suggest what all parameters i can use in rules condition.


Merging a Merge Request creates a push event to the target branch. There is no difference between branch update commit and Merged MR commit. It is still a commit.
You can try to set your rules around commit message CI_COMMIT_MESSAGE

What specific rule condition can i setup around CI_COMMIT_MESSAGE? . Please suggest some examples that would be helping me.

Example: Agree with your team that each MR commit message must start with ‘MR:’
Setup regex rule - if: '$CI_COMMIT_MESSAGE =~ /^MR:.*/' that would trigger pipeline if commit message starts with ‘MR:’

Thanks Peter.

I have different query regarding with group level custom project template creation

I am looking to create group level custom project template

This option is not available in my gitlab instance → General settings-> Advanced → custom project templates.

I will achieve this by using python gitlab api Please let me know which is relevant API which can be useful to create custom project templates.

HEllo Peter,

AS per your suggestions, i have setup this condition to trigger the job

if: ‘$CI_PIPELINE_SOURCE == “push” && $CI_COMMIT_BRANCH ==:branch_name && $CI_COMMIT_MESSAGE =~ /^MR:.*/’

I have given MR in start when i commit a file in repository & in a title when i creating merge request from source repository to destination repository. Please let me know , am i doing correctly? Where should i give as MR in start so it will populate in a variable $CI_COMMIT_MESSAGE?

I can enter atrt with MR in branch commit as well . how does it differs?