Практическое задание

Эта задача — шаг 12 курса «CI/CD: пайплайны и docker compose»

Ночная сборка по расписанию

средне~20 мин

В проекте app (клон в /root/app, вход в веб — на вкладке «GitLab») на каждый push идут быстрые тесты test.sh. Полная проверка nightly.sh идёт долго: её хотят гонять раз в сутки, ночью.

Добавь в .gitlab-ci.yml джобу nightly, которая запускает ./nightly.sh только в пайплайнах по расписанию: в пайплайнах от push её быть не должно, а test пусть остаётся везде. Запушь в main.

Потом создай в GitLab расписание для ветки main, которое срабатывает каждую ночь (время выбери сам), и запусти его один раз вручную, не дожидаясь ночи.

Что потренируешь:
  • GitLab CI
  • pipeline schedules
  • rules
  • cron

Разбор темы

Расписание (Pipeline schedule) запускает пайплайн для ветки по cron — например, каждую ночь. У такого пайплайна $CI_PIPELINE_SOURCE равен schedule, и по нему rules решают, каким джобам в нём быть: долгие проверки, обновление зависимостей, ночные сборки оставляют расписанию, а пайплайн от push держат быстрым. Время в расписании считается в его часовом поясе, а запустить расписание можно и вручную, не дожидаясь срока.

Что проверяется

  1. Есть активное ежедневное расписание для main
  2. Пайплайн по расписанию прошёл с джобой nightly
  3. Пайплайн от push в main — зелёный и без nightly
  4. test.sh и nightly.sh не изменены

Как это выглядит