Depndabot (див. Dependabot: GitHub та Terraform versions management) цікавий тим, що досить швидко і просто конфігуриться, але те, що він досі не вміє в Helm-чарти (хоча feature request був відкритий ще в 2018) робить його трохи useless для нас.
Отже, натомість давайте глянемо на Renovate, який прям дуже цінується всіма, хто має справу з менеджментом версій.
Що Renovate вміє?
- як і Dependabot, може запускатись з майже будь-яким хостингом – GitHub, Gitlab, Bitbucket тощо
- можемо запускати як self-hosted на власних GitHub Actions Runner
- можемо запускати в Kubernetes
Вміє перевіряти прям безліч систем – Terraform, Helm, Kubernetes manifest – перевіряти images і їхні апдейти, Dockerfiles. Див. Supported Managers.
Виводить дуже детальну інформацію по змінам які пропонує, і має власну дашборду.
Для GitHub найпростіший шлях інтеграції – через Renovate GitHub App.
Хоча в заголовку цього поста я вказав “Helm Charts”, але з коробки і з дефолтними параметрами Renovate виконає перевірку просто всього, що є в репозиторії і має якісь versions та dependencides.
Ну і коли я писав, що Dependabot “швидко і просто конфігуриться“, то у випадку з Renovate це взагалі фактично робиться в кілька кліків і працює просто з коробки.
Зміст
Підключення Renovate до GitHub
Переходимо на сторінку Renovate GitHub App, клікаємо Install, вибираємо в які репозиторії його підключити.
Я поки для тестів додам тільки в один репозиторій з нашим моніторингом де маємо Terraform та Helm:
Дозволяємо доступ:
Реєструємось на https://developer.mend.io – далі тут будуть дашборди з деталями перевірок:
Переходимо до репозиторію, і маємо відкритий Pull Request для ініціалізації Renovate:
Ііі… В принципі – це все 🙂
Налаштування Renovate
В цьому PR маємо створений файл renovate.json
з мінімальним конфігом:
Крім того, Renovate відразу визначив, які пакети в цьому репозиторії є:
І відразу визначає, що треба оновити:
А на сторінці репозиторію на developer.mend.io побачимо всі деталі перевірки:
Тепер можемо додати трохи свої параметрів, яких прям дуже багато, бо Renovate дозволяє дуже гнучко налаштувати ваші перевірки – див. всі на Configuration Options.
Наприклад, додамо розклад запуску, лейбли та будемо PR відразу асайнити на мене:
{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:recommended" ], "labels": ["dependencies"], "assignees": ["arseny-zinchenko"] }
По дефолту, Renovate має ліміт у 2 PR на годину. Аби збільшити цей ліміт – у файлі renovate.json
додаємо prHourlyLimit
:
{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:recommended" ], "labels": ["dependencies"], "assignees": ["arseny-zinchenko"], "prHourlyLimit": 10 }
Зберігаємо, пушимо і мержимо цей PR:
І маємо відкриті PR:
Деталі по конкретному PR:
Renovate Dependency Dashboard та GitHub Issues
Окремо можемо включити створення Issues для всіх PR, які буде створювати Renovate.
Переходимо в Settings репозиторію – включаємо Issues:
Тепер, коли Renovate буде відкривати PR з апдейтами – він створить GitHub Issue з деталями по апдейту:
Ну в цілому на цьому все.
“It (just) works!” (c)
Можливо, потім додам ще якісь деталі по конфігурації, коли буду налаштовувати інші репозиторії.
Корисні посилання
- Keep your dependencies up to date with Renovate By Michael Vitz (Youtube)
- Keep Terraform Up-to-date with Renovate – Episode 94 (Youtube)
- цілий список відео про Renovate, частково українською
- Renovate – Hands On Tutorial
- Maintenance free Renovate using GitHub Actions workflows
- Understanding Mend Renovate’s Pull Request Workflow