Зависимости, один из краеугольных камней современной разработки. Чтобы сконцентрировать наши усилия на написании уникальной бизнес логики, которая и является конкурентным преимуществом нашей компании, мы втягиваем в проект десятки зависимостей.
С одной стороны это хорошо — мы можем делать что-то, что относится к нашей экспертизе, например, как в случае с SHARE NOW, сдавать машинки в аренду, а не тратить время на низкоуровневое программирование про то, как положить данные в
PostgreSQL. С другой стороны — зависимости постоянно обновляются, в них находят критические (log4j) уязвимости, зависимости не всегда следуют правилам semantic versioning. И следить за ними большая боль.Если что-то боль, то лучше это что-то автоматизировать. И в случае с зависимостями, решение тоже есть. Это проект Renovate.
Эту штуку можно сконфигурировать с платформой где лежит ваш код (gitlab, github и другие) и с вашим
CI. В итоге будет следующее:1.
Renovate видит, что доступна новая версия какой-то зависимости2. Он создает merge request, где обновлена только эта зависимость
3. Ваш
CI прогоняет pipeline, где запускаются unit и integration тесты (у вас ведь есть?)4. Если все зеленое, то можно смело мерджить в основную ветку. Еще лучше, если вы настолько доверяете сетапу своего проекта, что
MR будет мерджиться автоматически.Проект поддерживает множество языков и платформ —
Java, Node.js, JavaScript и даже Docker и terraform.Интеграция таких решений как
Renovate косвенно заставляет вас писать лучшие тесты, вы ведь хотите, чтобы CI сам проверял все сценарии и мерджил обновления?⬛️ Еще раз — использовать зависимости это хорошо, другие люди делают за нас работу. Еще лучше, когда вы тоже вносите свой вклад в open source. Но даже если нет, то зависимости надо регулярно обновлять, иначе точно будет беда. Обновление зависимостей можно автоматизировать с помощью Renovate.
У вас настроено автоматическое обновление зависимостей?
#хардскиллы