После помещения изменений (push) на сервер следует выполнять только задачи, не требующие много ресурсов. Ресурсоёмкие задачи можно отложить на время минимальной нагрузки сервера. Для этого нужно:
-
в секциях файла
.gitlab-ci.yml
, запускающих задачи с высокой нагрузкой, добавить
only:
- schedules
подробнее это описано здесь
-
в веб-интерфейсе в меню CI/CD / Расписания добавить Новое расписание и назначить исполнение задачи на время, когда нагрузка на сервер минимальна.
Для пропуска запланированной задачи в исполняемый скрипт нужно добавить
проверку условия запуска. Например, чтобы отменить запуск компиляции,
если за последний день (86400 секунд) не было изменений, можно оформить
.gitlab-ci.yml
примерно так:
nightly-job:
only:
- schedules
script:
- "[ $(($(date +%s)-$(git log -1 --date=format:%s --format=%cd))) -gt 86400 ] && exit 0"
- make