Я автоматизировал все свои обновления зависимостей, и вы тоже должны!

В наши дни почти у каждого проекта есть другие проекты, от которых он зависит. Это неплохо. Хорошо. Позвольте другим сделать всю тяжелую работу за вас и просто используйте все удобные API.

Но будет еще хуже, если кто-то обнаружит уязвимость в одной из этих зависимостей. И еще хуже для вас, если патч существовал месяцами, вы просто не слышали о нем.
Другая распространенная проблема заключается в том, что если вы не используете последнюю версию пакета, документация и помочь вам найти в Интернете может не работать для вас. Это расстраивает.

Но есть инструменты, которые могут помочь вам здесь. Самый популярный инструмент — Dependabot, недавно приобретенный и интегрированный GitHub. Dependabot будет регулярно проверять ваши зависимости и при необходимости откроет запрос на включение с изменением версии.

Ок, круто, подумаете вы. Я устанавливаю dependabot и время от времени сливаю эти обновления.

Да может быть, но не совсем. Если посчитать, то над всеми вашими зависимостями работает гораздо больше людей, чем над вашим проектом. Не раз я открывал один из своих проектов, к которому не прикасался какое-то время, и получил массу открытых запросов на включение от Dependabot.

Затем я обнаружил, что всякий раз, когда я «просматривал» такой запрос на вытягивание, я просто проверял, работает ли еще CI, и слепо сливал его. Это может быть автоматизировано. Правильно?

Да, оно может! Dependabot даже предлагает такую ​​встроенную функциональность.

Вы можете подумать, что это может работать, только если у вас есть тонны тестов, верно? Иначе это будет регулярно ломать систему?

Нет! Во многих моих проектах у меня нет большого количества тестов. В некоторых проектах я просто проверяю, работает ли сборка и корректны ли все линтеры с изменениями.
После более чем двух лет автоматического слияния в более чем 10 проектах (рабочих и частных) я могу уверенно сказать, что никогда ни одно из автоматических обновлений зависимостей ничего не ломало. Если он ломался, сборка переставала работать.
ИМХО, преимущества всегда актуального репозитория намного перевешивают риски автоматического слияния.

Если подумать, то не так много проблем с обновлениями зависимостей, которые могут нарушить работу вашего проекта:
- Если есть исправления ошибок или исправления безопасности, API обычно не меняются, что приводит к очень низким рискам сломанная сборка
- Если есть обновления минорных версий, они, скорее всего, будут только добавлять новые функции (при условии, что они следуют правилам семантического версионирования)
- И если есть действительно редкие основные обновления, они, скорее всего, сломают вашу сборку, потому что есть переименованный импорт, удаленные методы и т. д. Это все вещи, которые могут привести к сбою вашего шага сборки.

А теперь: начните автоматизировать обновления зависимостей. Я рекомендую этот учебник от @toufik.airane https://medium.com/@toufik.airane/automerge-github-dependabot-alerts-with-github-actions-7cd6f5763750

Что вы думаете об автоматических обновлениях зависимостей? Я убедил тебя попробовать? Вы все еще боитесь? У вас есть плохой опыт? Пожалуйста, дай мне знать!