GitLab CI

GitLab CI Pipeline Schedule Generator

GitLab CI uses standard 5-field Unix cron. Build your expression below, then paste it into Build → Pipeline schedules in the GitLab UI. Timezone is configurable per schedule — not forced to UTC.

At 09:00 AM, Monday through Friday

Valid

Next 10 executions

  1. 1Thu, Apr 9, 2026, 9:00 AM
  2. 2Fri, Apr 10, 2026, 9:00 AM
  3. 3Mon, Apr 13, 2026, 9:00 AM
  4. 4Tue, Apr 14, 2026, 9:00 AM
  5. 5Wed, Apr 15, 2026, 9:00 AM
  6. 6Thu, Apr 16, 2026, 9:00 AM
  7. 7Fri, Apr 17, 2026, 9:00 AM
  8. 8Mon, Apr 20, 2026, 9:00 AM
  9. 9Tue, Apr 21, 2026, 9:00 AM
  10. 10Wed, Apr 22, 2026, 9:00 AM

How to Create a GitLab Pipeline Schedule

  1. Go to your project in GitLab → Build → Pipeline schedules
  2. Click New schedule
  3. Enter a description, paste your cron expression in the Cron field
  4. Select your timezone from the dropdown (supports all IANA timezones)
  5. Select the target branch or tag
  6. Click Save pipeline schedule

Schedules can also be managed via the GitLab Pipeline Schedules API.

Using Schedules in .gitlab-ci.yml

While schedules are created in the UI, you can target scheduled runs inside your pipeline config using $CI_PIPELINE_SOURCE:

# Only run this job on scheduled pipelines
nightly-build:
  script: ./run-nightly.sh
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"

# Run on schedule AND manual trigger, but not on push
weekly-report:
  script: ./weekly-report.sh
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - if: $CI_PIPELINE_SOURCE == "web"

Common Patterns

ExpressionMeaning
0 9 * * 1-5Weekdays at 9:00 AM (your selected timezone)
0 2 * * *Every day at 2:00 AM
0 0 * * 0Sundays at midnight
0 0 1 * *1st of every month at midnight
0 */6 * * *Every 6 hours

Key Constraints

  • Schedules are created in the GitLab UI (or API) — not in .gitlab-ci.yml
  • Minimum interval on GitLab.com: 1 hour
  • Timezone is configurable per schedule (not forced to UTC)
  • Scheduled pipelines set $CI_PIPELINE_SOURCE = "schedule"
  • No @-aliases supported

GitLab CI Schedule FAQ

Where do I define a GitLab CI pipeline schedule?
In the GitLab UI under Build → Pipeline schedules → New schedule. You paste the cron expression into the "Cron" field. Timezone is selectable per schedule in the same form. Schedules are not defined in .gitlab-ci.yml — GitLab uses a separate UI-only (or API-based) system for scheduling.
What cron syntax does GitLab CI support?
Standard 5-field Unix cron: minute hour day-of-month month day-of-week. GitLab uses Rufus Scheduler syntax, which supports standard ranges, lists, and steps. It does not support @-aliases like @daily. Day-of-week: 0=Sunday, 6=Saturday.
Can I set a timezone for a GitLab pipeline schedule?
Yes — unlike GitHub Actions (UTC-only), GitLab lets you choose a timezone per schedule in the UI. When creating or editing a schedule, select your timezone from the dropdown. The timezone applies only to that schedule, not globally. IANA timezone names are used (e.g. America/New_York, Africa/Lagos).
How do I run a GitLab pipeline schedule only on a specific branch?
In the schedule form, select the target branch (or tag) in the "Target branch or tag" field. You can also guard inside .gitlab-ci.yml using rules: - if: $CI_PIPELINE_SOURCE == "schedule" to target only scheduled runs, or combine with $CI_COMMIT_BRANCH for branch filtering.
What is the minimum interval for GitLab scheduled pipelines?
The minimum interval depends on your GitLab instance configuration. On GitLab.com (SaaS), the minimum is 1 hour — schedules set to run more frequently are silently rounded up. On self-managed GitLab, the minimum is configurable by admins (default is also 1 hour on most installations). Check your GitLab admin settings under Settings → CI/CD → Pipeline schedules.