EMZETT.
Войти

Автоматические обновления зависимостей: Dependabot и Renovate

Коротко: Dependabot и Renovate регулярно проверяют, нет ли у библиотек новых версий или патчей безопасности, и автоматически открывают pull request с обновлением.

Подробнее: Современные проекты зависят от сотен пакетов. Если они устаревают, накапливаются уязвимости и дорогостоящие скачки версий. Ручную проверку забывают; боты берут её на себя регулярно и небольшими шагами.

Подробности

Как это работает

Бот читает package.json/lock-файлы, requirements.txt, pom.xml, Dockerfile, файлы GitHub Actions и сравнивает с последними версиями. Если есть обновление, он создаёт pull request со списком изменений, ссылкой на заметки о выпуске и прогоняет ваши CI-тесты. Вы проверяете и сливаете. О уязвимостях (CVE) сообщают оповещения безопасности Dependabot и создают срочные PR.

Dependabot и Renovate

  • Dependabot (GitHub): простой, конфигурация .github/dependabot.yml; интегрирован в функции безопасности GitHub.
version: 2
updates:
  - package-ecosystem: npm
    directory: "/"
    schedule: { interval: weekly }
    groups:
      dev-tools: { dependency-type: development }
  • Renovate (открытый исходный код, также GitLab, Gitea, можно развернуть у себя): очень гибко настраивается (группировка, автослияние патчей, правила по пакетам, временные окна), поддерживает много форматов.

Оба лучше всего работают с хорошим набором тестов.

Хорошая практика

  • Группируйте (например, все инструменты разработки в одном PR), чтобы не было потока PR.
  • Автоматически сливайте патч- и минорные обновления при зелёных тестах, мажорные обновления проверяйте вручную.
  • Версионируйте lock-файлы, чтобы сборки были воспроизводимы.
  • Читайте заметки о выпуске, особенно для мажорных версий и несовместимых изменений.
  • Фиксируйте критичные зависимости (диапазоны версий, ~/^, выбирайте осознанно).
  • Расписание (еженедельно) вместо ежедневной суеты.
  • Учитывайте цепочку поставок: обновления тоже могут быть вредоносными (скомпрометированные пакеты); вводите новые версии с коротким периодом ожидания (например, 3 дня).

Польза

Меньше риска безопасности, меньшие обновления (проще отлаживать, чем скачок через 2 года), актуальные инструменты и меньше «долга по обновлениям». Для небольших проектов достаточно ежемесячной проверки с помощью npm outdated/npm audit/pip list --outdated, если усилия на бота кажутся слишком большими.

См. также: Зависимости и уязвимости (CVE), npm audit, Цепочка поставок ПО