What is the purpose of "workflow:rules" in Gitlab-ci pipelines?

Viewed 7321

I am a bit confused between Gitlab CI pipeline workflow:rules and job:rules

workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "push"'
    - if: '$CI_PIPELINE_SOURCE != "schedule"'

and

test:
  stage: test
  image: image
  script:
    - echo "Hello world!"
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"

What happens if both of them were used in the same GitLab-ci YAML file.

1 Answers

With worfklow you configure when a pipeline is created while with rules you configure when a job is created.

So in your example pipelines are created for pushes but cannot be scheduled while your test job will only run when scheduled.

But as workflow rules take precedence over job rules, no pipeline will be created in your example as your rules for workflow and job are mutually exclusive.

Related