Dependabot вводит трёхдневную задержку перед обновлениями: что изменится для разработчиков
GitHub объявил о значительном изменении в работе Dependabot — инструмента автоматического обновления зависимостей. Теперь перед созданием pull request с обновлением версии Dependabot будет ждать три дня. Эта задержка, названная cooldown, призвана снизить риски, связанные с преждевременным внедрением

GitHub объявил о значительном изменении в работе Dependabot — инструмента автоматического обновления зависимостей. Теперь перед созданием pull request с обновлением версии Dependabot будет ждать три дня. Эта задержка, названная cooldown, призвана снизить риски, связанные с преждевременным внедрением обновлений, которые могут содержать неисправности или уязвимости. Для разработчиков это означает, что автоматические обновления станут более безопасными, но немного медленнее. В этой статье мы разберём, как работает трёхдневная пауза, почему она была введена и как адаптировать свои проекты.
Трёхдневная пауза: как это работает
По умолчанию Dependabot больше не будет сразу предлагать обновление до последней версии пакета. Вместо этого он выжидает три дня после публикации релиза. За это время мейнтейнеры проектов и исследователи безопасности могут обнаружить и сообщить о проблемах, таких как регрессии или новые уязвимости. Если за три дня не поступило сигналов о критических проблемах, Dependabot создаёт pull request как обычно. Если же проблема найдена, обновление может быть отложено или отменено. Это изменение затрагивает все типы обновлений, включая патчи безопасности. Однако для критических CVE (Common Vulnerabilities and Exposures) GitHub рекомендует использовать отдельный механизм — Dependabot security updates, который не подвержен задержке. Таким образом, cooldown не замедлит исправление уже известных серьёзных уязвимостей.
Почему Dependabot теперь ждёт три дня перед обновлением?
Проблема «слепого» автоматического обновления зависимостей известна давно. Разработчики не раз сталкивались с ситуациями, когда свежий релиз библиотеки ломал сборку или вносил новые баги. Особенно остро это проявляется в экосистемах с высокой частотой релизов, таких как JavaScript (npm) или Python (PyPI). Dependabot, будучи популярным инструментом, часто становился источником таких проблем, автоматически предлагая обновления, которые затем приходилось откатывать. GitHub пошёл по пути, который уже применяется в некоторых сообществах: например, в экосистеме Rust (crates.io) существует практика «24-часового окна» перед публикацией, чтобы авторы могли отозвать ошибочный релиз. Введение трёхдневного cooldown — это компромисс между скоростью обновлений и безопасностью. Разработчики получают дополнительное время для проверки новых версий, что снижает риск внедрения проблемных релизов.
Как это повлияет на процесс разработки?
Для разработчиков, использующих Dependabot, главное изменение — увеличение времени между выходом новой версии и её предложением в проекте. Если раньше pull request мог появиться через несколько минут после релиза, то теперь придётся ждать до трёх дней. Это может замедлить получение фич и исправлений, но снизит вероятность внедрения «сырых» обновлений. Важно отметить, что cooldown можно настроить или отключить. В конфигурационном файле Dependabot (обычно .github/dependabot.yml) можно задать параметр open-pull-requests-limit или использовать флаг cooldown (документация уточняется). Для проектов, где критична скорость обновлений (например, для исправления уязвимостей), рекомендуется оставить security updates без задержки. Кроме того, для критически важных обновлений безопасности GitHub рекомендует использовать отдельный механизм — Dependabot security updates, который не подвержен задержке.
Как отключить трёхдневную задержку Dependabot?
Если трёхдневная задержка не подходит для вашего проекта, её можно отключить. Для этого в конфигурационном файле Dependabot (.github/dependabot.yml) необходимо задать параметр cooldown: false или настроить соответствующий флаг. Однако стоит помнить, что отключение cooldown увеличивает риск внедрения проблемных обновлений. GitHub рекомендует отключать задержку только для проектов с высокой толерантностью к риску или для тех, где обновления проходят дополнительное тестирование. Также можно настроить разные задержки для разных типов зависимостей, например, для dev-зависимостей установить меньший период.
Технические детали реализации
Механизм cooldown реализован на стороне GitHub: Dependabot отслеживает дату публикации релиза в реестре пакетов (npm, PyPI, RubyGems, NuGet, Maven и др.). Если с момента публикации прошло менее трёх дней, Dependabot не создаёт pull request. При этом сам процесс сканирования зависимостей и проверки наличия новых версий продолжается в обычном режиме. Задержка применяется только к обновлениям версий (version updates), а не к security updates. Security updates запускаются по сигналам из GitHub Advisory Database и не подвержены cooldown. Это гарантирует, что критические уязвимости будут исправляться оперативно. Для пользователей это означает, что обновления безопасности не будут задерживаться, в то время как обычные обновления версий будут проходить дополнительную проверку.
Кого затронет и как
Изменение коснётся всех пользователей Dependabot, включая как индивидуальных разработчиков, так и крупные организации. Для open-source проектов, где мейнтейнеры часто не успевают оперативно реагировать на новые релизы, cooldown может стать спасением: он даёт время на проверку обновлений сообществом. Для коммерческих проектов с жёсткими сроками доставки функций задержка может быть нежелательной, но её можно отключить. Российским и СНГ-разработчикам, активно использующим GitHub, стоит учесть, что изменение вступает в силу автоматически для всех репозиториев. Если проект использует Dependabot для автоматических обновлений, необходимо проверить, не потребуется ли корректировка настроек. Рекомендуется протестировать новое поведение на тестовом репозитории перед применением в production.
Что будет дальше
GitHub планирует собирать отзывы сообщества и, возможно, скорректировать длительность cooldown или сделать его настраиваемым в более широких пределах. Пока трёхдневная задержка установлена по умолчанию, но в будущем могут появиться опции для разных типов зависимостей (например, для dev-зависимостей можно сделать меньшую задержку). Также стоит ожидать, что другие инструменты управления зависимостями (Renovate, Snyk) могут последовать примеру GitHub и внедрить аналогичные механизмы. Для разработчиков это означает, что подход к автоматическим обновлениям становится более зрелым и ориентированным на безопасность.
Итог
Введение трёхдневной задержки в Dependabot — это шаг к более безопасной автоматизации обновлений. Разработчики получают дополнительное время для проверки новых версий, что снижает риск внедрения проблемных релизов. При этом критически важные исправления безопасности не задерживаются. Каждому проекту стоит оценить, насколько cooldown соответствует его потребностям, и при необходимости настроить Dependabot соответствующим образом. Настройка Dependabot под свои нужды — ключ к балансу между скоростью и безопасностью.