Skip to content

only:changes / except:changes advanced CI rules is not working as expected when triggered via web & schedule

Summary

only: changes / except: changes CI rules are interacting with web & schedule trigger in an unexpected way.

web trigger -> click on "Run Pipeline" from the pipeline page

schedule trigger -> When the pipeline is triggered from pipeline_schedules page, either if pipeline fire on the scheduled time or forcing it via the pipeline schedules page

Steps to reproduce

Only_changes:
  stage: build
  only:
    changes: 
      - trigger_change/*
  script:
    - echo "Only Changes Rules"
# With changes in trigger change dir No changes in trigger change dir
Triggered via commit Expect: Triggered / Current: Triggered Expect: No Trigger / Current: No Trigger
Triggered via web/schedule Expect: Triggered / Current: Triggered Expect: No Trigger / Current: Triggered
Except_changes:
  stage: build
  except:
    changes: 
      - trigger_change/*
  script:
    - echo "Except Changes Rules"
# With changes in trigger change dir No changes in trigger change dir
Triggered via commit Expect: No Trigger / Current: No Trigger Expect: Triggered / Current: Triggered
Triggered via web/schedule Expect: No Trigger / Current: No Trigger Expect: Triggered / Current: No Trigger
Combine refs & except changes:
  stage: build
  only:
    refs:
      - web
      - schedules
  except:
    changes: 
      - trigger_change/*
  script:
    - echo "Combine refs & except changes"
  • Expectation: Pipeline triggers when it is stared from "web" and "schedule" except there are changes in the trigger_change directory
  • Reality: This is never triggered no matter what happened

Example Project

https://gitlab.com/awinata/issue-58961/pipelines -> Check the jobs on the pipelines. The jobs are named accordingly

Particularly: https://gitlab.com/awinata/issue-58961/pipelines/51819975 -> Triggered via Run Pipeline button on the web with no changes inside the trigger_changes directory. Except_changes job should trigger, instead Only_changes job triggered. The Combine_refs_except_changes should trigger as well, but it didn't

Initially reported in a ticket from customer (Internal Only ZD: https://gitlab.zendesk.com/agent/tickets/114897)

Output of checks

This bug happens on GitLab.com

Edited by Andrew Winata