Renovate: GitHub та Helm Charts versions management

Автор |  29/05/2024
 

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)

Можливо, потім додам ще якісь деталі по конфігурації, коли буду налаштовувати інші репозиторії.

Корисні посилання