Mend Renovate
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 вариант и опробовать его на проекте.