I have a gitlab pipeline and I'm trying to set a rule for a merge request event, i want to fire the rule when i have a merge request and the source branch is different from main and develop. I do that in my job.
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^develop|^main/
If i just do that it works
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
The variable $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
is available.
But it seems that the regex doesn't works or the &&
In my question the regex was wrong. To resolve my problem i do that I just simply split the evalution in two steps
otherwise i will go to the step 2 that will evaluate the merge request event, but for other branches different from main or develop
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_COMMIT_BRANCH =~ /^develop|^main/
when: never
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
changes:
- 'yarn.lock'