Синтаксис Cron

Запис завдання складається з двох частин: графіка (5 полів) та команди.

Ось як розшифровуються ці п’ять «зірочок»:

ПолеЗначенняДіапазон
1Хвилини0 – 59
2Години0 – 23
3День місяця1 – 31
4Місяць1 – 12
5День тижня0 – 6 (0 — неділя)

Спеціальні символи

Щоб гнучко налаштовувати час, використовують оператори:

  • * (Зірочка) — Завжди. Наприклад, «щохвилини».
  • , (Кома) — Перелік. 1,15,30 у полі хвилин означає: у 1-шу, 15-ту та 30-ту хвилини.
  • - (Тире) — Діапазон. 1-5 у полі днів тижня означає: з понеділка по п’ятницю.
  • / (Слеш) — Крок. */10 у полі хвилин означає: «кожні 10 хвилин».

Приклади для закріплення:

  • 30 18 * * * — Щодня о 18:30.
  • 0 0 1 * * — О північі першого числа кожного місяця.
  • 0 9-18 * * 1-5 — На початку кожної години (0 хвилин) з 9 ранку до 6 вечора, але тільки у будні дні.
  • 0 0 * * 6 — О північі щосуботи.

Приклад файлу YAML

YAML

name: CI Checks

on:
  # Перевірка при кожному мержі (точніше, при створенні/оновленні PR)
  pull_request:
    branches:
      - main
      - master

  # Запуск тестів за розкладом
  schedule:
    # Раз на тиждень у суботу о 00:00 за UTC
    - cron: '0 0 * * 6'

jobs:
  # Робота для перевірки лінтера
  lint:
    runs-on: ubuntu-latest
    # Запускаємо тільки якщо це PR
    if: github.event_name == 'pull_request'
    steps:
      - uses: actions/checkout@v4
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm run lint

  # Робота для запуску тестів
  test:
    runs-on: ubuntu-latest
    # Запускаємо тільки за розкладом
    if: github.event_name == 'schedule'
    steps:
      - uses: actions/checkout@v4
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test