Перейти к содержанию

Renovate: обновления зависимостей и образов в GitLab

CI/CD · Зависимости
Не изучено

Добавлено 2026-10-29.

Проблема

Образы и зависимости обновляются вручную и редко. Закрепление по digest безопасно, но без автоматизации digest устаревает, и уязвимые версии живут месяцами.

Решение

Запускать Renovate по расписанию как job в self-hosted GitLab. Он создаёт merge request с обновлением и changelog; закрепление образов по digest включается пресетом docker:pinDigests. Автослияние — только при наличии тестов в CI.

Пример

.gitlab-ci.yml в отдельном проекте бота, запуск из Pipeline schedules. RENOVATE_TOKEN — маскированная переменная CI с токеном отдельного пользователя.

renovate:
  image: renovate/renovate:44.196.1   # закрепить по digest
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
  variables:
    RENOVATE_PLATFORM: gitlab
    RENOVATE_ENDPOINT: $CI_API_V4_URL
    RENOVATE_REPOSITORIES: infra/devops-kb
  script:
    - renovate

renovate.json в обслуживаемом репозитории:

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended", "docker:pinDigests"],
  "schedule": ["* 0-5 * * 1"],
  "packageRules": [
    { "matchDatasources": ["docker"], "groupName": "docker images" }
  ]
}

Для зависимостей с github.com дополнительно нужен RENOVATE_GITHUB_COM_TOKEN, иначе Renovate упрётся в лимиты API.

Когда применять

В любом репозитории с Dockerfile, compose-файлами или зависимостями пакетных менеджеров.

Источник

Как применить у себя

  1. Завести пользователя-бота с правом создавать MR только в нужных проектах.
  2. Запустить на одном репозитории, без автослияния.
  3. Проверить первый MR с обновлением digest и changelog.
  4. Отметить «Изучено», когда обновления приходят еженедельно и сливаются после зелёного CI.