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
- 1Thu, Apr 9, 2026, 9:00 AM
- 2Fri, Apr 10, 2026, 9:00 AM
- 3Mon, Apr 13, 2026, 9:00 AM
- 4Tue, Apr 14, 2026, 9:00 AM
- 5Wed, Apr 15, 2026, 9:00 AM
- 6Thu, Apr 16, 2026, 9:00 AM
- 7Fri, Apr 17, 2026, 9:00 AM
- 8Mon, Apr 20, 2026, 9:00 AM
- 9Tue, Apr 21, 2026, 9:00 AM
- 10Wed, Apr 22, 2026, 9:00 AM
How to Create a GitLab Pipeline Schedule
- Go to your project in GitLab → Build → Pipeline schedules
- Click New schedule
- Enter a description, paste your cron expression in the Cron field
- Select your timezone from the dropdown (supports all IANA timezones)
- Select the target branch or tag
- 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
| Expression | Meaning |
|---|---|
0 9 * * 1-5 | Weekdays at 9:00 AM (your selected timezone) |
0 2 * * * | Every day at 2:00 AM |
0 0 * * 0 | Sundays 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.