GitLab CI Pipeline on specific branch only

50,023

Solution 1

It was my mistake - I had two different .gitlab-ci.yml files in develop branch and feature/some-feature branch and that's why the Pipeline was executed for all branches.

Solution 2

Although it has been passed much time on this discussion I would like to suggest an opinion, which I am using most of the time.

rules:
    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master"'
      when: on_success
      changes:
        - folder/some_folder/**/* 
    - if: '$CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_BRANCH == "development"'
      when: manual
      changes:
        - folder/some_other_folder/**/* 

This structure solved my various problems, I hope it helps you to!

Regards.

Share:
50,023
ProximaCygni
Author by

ProximaCygni

Updated on July 25, 2022

Comments

  • ProximaCygni
    ProximaCygni almost 2 years

    I'm trying to implement GitLab CI Pipelines to build and deploy an Angular app. In our project we have two general branches: master (for production only) and develop. For development we create feature/some-feature branches from develop branch. When development finished, we create merge request from feature/some-feature to develop. When merge request approved and merged into develop branch I want to run a Pipeline in order to build application and deploy the build on some environment.

    I use the following setup in .gitlab-ci.yml:

    image: node:7.5-configured
    
    stages:
        - build
        - deploy
    
    build_job:
        stage: build
        only:
            - develop
        script:
            - /bin/bash <some script here>
    
    ...
    

    The problem is that Pipeline executed every time I push into any feature/some-feature branch. What's wrong with my setup? How can I force the Pipeline to be executed only when push performed into develop branch directly?

    Solution It was my mistake - I had two different .gitlab-ci.yml files in develop branch and feature/some-feature branch.

  • LostPhysx
    LostPhysx about 3 years
    But then I need to add it to .gitignore as well, right? Otherwise it will overwrite the .gitlab-ci.yml in the master branch when I merge.
  • user3389196
    user3389196 over 2 years
    This doesn't solve the problem. The .gitlab-ci-yml file will eventually end up on other branches because they're creating new branches from development and merging into development. I'm not sure about the .gitignore comment but that file isn't really meant for this.
  • Shapeshifter
    Shapeshifter almost 2 years
    It may help for the reader's if you explained why this is a better alternative. It would be appreciated