30 июля 2026

Обновление зависимостей в GitLab

Делал исследование на тему автоматизации обновления зависимостей в GitLab по аналогии с GitHub Dependabot.

Чаще всего приходится обновлять:

  • GitLab CI скрипты
  • Версии Helm чартов
  • Теги контейнерных образов, которые использует Helm чарт

Поиск в сети дал три кандидата, которые более-менее подходили под эти требования:

Dependabot-gitlab 

Про dependabot-gitlab особо рассказать нечего. Он является обёрткой над dependabot-core. Я не нашёл какой-либо информации о поддержке обновления CI скриптов GitLab поэтому этот вариант был сразу отброшен.

Updatecli 

Updatecli не поддерживает обновление GitLab CI скриптов, но у меня получилось "накрутить" конфигурацию которая будет их обновлять. В итоге получилась "простыня" на 50+ строк, которую пришлось самостоятельно доводить до рабочего варианта, т.к. AI агент не осилил написать синтаксически верную конфигурацию, упорно пытаясь использовать "kind: gitlabtag" и выполняя чтобы получить список тегов из GitHub репозитория.

В какой-то момент мое терпение закончилось и я быстро нашёл в документации что правильный вариант "kind: gitlab/tag". После этого оставалось поправить несколько "шероховатостей" и первый MR создался. В общем легковесный и рабочий вариант, но скорее всего придётся писать конфиг руками и конфигурация по-умолчанию привязана к конкретному репозитарию.

Renovate 

Renovate понравился больше всего. Ставится в Kubernetes кластер через Helm чарт, привязывается к GitLab серверу через веб хуки (можно не привязывать, но тогда срабатывание будет только по расписанию). Сходу определились доступные обновления CI скриптов, образов, которые указаны в services и теги в Helm values.yaml файле.

Наш нестандартный пайплайн для Helm чартов в котором версия чарта задаётся через переменную получилось прикрутить через "regex" custom manager. Перед переменной нужно добавить аннотацию чтобы renovate понимал как выделить текущую версию и проверить наличие обновления. При первом запуске в репозитории создаётся "Configure Renovate" MR в котором перечислены изменения которые произойдут после включения Renovate. По-умолчанию создаёт только 2 MR в час и на первое время стоит увеличить этот лимит через параметр prHourlyLimit.

Для community версии Renovate по-умолчанию предоставляется лицензия на 10 репозитариев и чтобы снять это ограничение нужно запросить отдельную бесплатную лицензию.


Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

Комментариев нет:

Отправить комментарий