Skip to content

Allow defining scheduled pipelines triggers as yaml

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Proposal

Currently, pipelines can only be triggered on a schedule using the UI (CI/CD -> Schedules), or REST API. Ideally, it should be possible to define schedules in the .gitlab-ci.yml file. This has several benefits, but most importantly, we can use a single schedule definition and share it with other projects using include. This also complies with our policies to define (as much as possible) "as code".

See: https://support.gitlab.com/hc/en-us/requests/182472

Intended users

Proposal

Add a new top-level schedules keyword that allows defining multiple schedules directly from code. Proposed syntax:

schedules:
- name: Schedule name
  cron: * * * * *
  timezone: UTC # could come in future iteration
  target_branch: main
  variables: {} # could come in future iteration

Required fields:

  • name
  • cron

Field with defaults values:

  • timezone: Defaults to UTC
  • target_branch: Defaults to CI_DEFAULT_BRANCH
  • variables: Defaults to an empty block {}

Design ideas/questions

  • Which takes precedence in case of conflict between schedules block in the gitlab-ci.yml, schedules in UI or defined through the API? The last schedule change takes precedence
Edited by 🤖 GitLab Bot 🤖