RedMad Technology RadarRedMad Technology Radar

Mend Renovate

Trial

Docs | Sources

Renovate — это инструмент для автоматизации обновления зависимостей. При этом он не ограничивается только библиотеками, а умеет проверять версии Gradle, Docker-образов, GitHub Action'ов и т.д.

Возможности:

  • Создание MR'ов с обновлениями (с возможностью автоматического влива)
  • Дашборд зависимостей, где видно все доступные обновления для проекта
  • Гибкая конфигурация. Важно сказать, что Renovate из коробки работает даже без настройки. Есть возможность тонко настроить всё начиная с именования коммитов, заканчивая логикой сколько дней должна "настояться" зависимость прежде чем на неё можно обновляться
  • В GitHub можно использовать официальный Renovate GitHub App, а для других систем управления репозиториями поднять self-hosted вариант

Какую проблему решаем

Важно непрерывно поддерживать свежесть зависимостей, чтобы получать свежие фиксы и баги.

Задача обновления зависимостей часто откладывается как не самая важная, а чем дольше она откладывается, тем больше болезненных изменений накапливается. Ещё одна возможная причина откладывания — на проекте нет человека, который бы отслеживал обновления, поэтому обновления происходят по принципу "когда уже совсем прижало".

Renovate может решить обе эти проблемы. Обновления будут приходить небольшими порциями и их будет проще влить, а за обнаружение новых версий будет отвечать робот, а не человек.

Возможные альтернативы

Dependabot — бот для обнаружения новых версий зависимости, встроенный в GitHub. Его преимущество является так же и недостатком — он встроен в GitHub, а значит использовать в GitLab или других уже не получится. В доке Renovate есть сравнение Renovate с Dependabot.

ben-manes/gradle-versions-plugin — Gradle-плагин для обнаружения новых версий подключенных зависимостей. Исправно выполняет свою функцию по поиску обновлений. Если нужно не только искать новые версии, а ещё и выстроить процесс автоматического обновления (как минимум создавать MRы с обновлениями), проще использовать Renovate.

Опыт применения

Renovate успешно показал себя в проекте versions-каталогов, где особенно важно сохранять зависимости свежими. Следующим шагом хочется поднять self-hosted вариант и опробовать его на проекте.