Застарілі залежності — джерело критичних вразливостей і технічного боргу. Ручне оновлення сотень пакетів раз на квартал віднімає дні та часто відкладається до авралів. Наприклад, проєкт із 300+ залежностями потребує 8 годин на тиждень тільки на апдейти. Ми автоматизуємо цей процес за допомогою Dependabot і Renovate: система сама відстежує вихід нових версій, створює PR і зливає патч-оновлення без участі розробника. Згідно з документацією GitHub, Dependabot підтримує групування оновлень, що скорочує кількість PR у 5–10 разів. Це економить до 40% часу на підтримці проєкту та закриває вразливості за години, а не тижні. Типова економія бюджету — від 40 000 грн на місяць на зарплаті розробника. Наші інженери мають більше 10 років досвіду та автоматизували оновлення для проєктів із 500+ залежностями — результат: скорочення часу на підтримку на 30–50%.
Замовте консультацію з автоматизації залежностей — наші інженери допоможуть налаштувати процес під ваш проєкт.
Переваги автоматизації оновлень
Кожен пропущений апдейт — потенційний експлойт. Атаки через вразливості в сторонніх пакетах зростають щороку (згідно з даними Snyk, 78% проєктів мають хоча б одну вразливість у залежностях). Автоматизація дозволяє тримати стек свіжим без рутини: Dependabot перевіряє npm, GitHub Actions, Docker і Composer, групує dev-залежності в один PR і надсилає сповіщення. Наші інженери налаштовують політики оновлень так, щоб production-пакети проходили повну перевірку CI, а dev-оновлення вливались автоматично. Групування скорочує кількість PR у 5–10 разів, авто-мердж економить до 1 години перевірки на день.
Як налаштувати Dependabot із групуванням PR?
Конфігурація починається з аналізу lock-файлу та поточних залежностей. Ми визначаємо політики для production і dev-пакетів: для останніх вмикаємо авто-злиття для патч- і мінорних версій. Приклад конфігурації — у блоці нижче. Групування (groups) скорочує кількість PR у 5–10 разів, а auto-merge економить годину перевірки на день. Додатково налаштовуємо ігнорування major-оновлень для критичних бібліотек (React, Next.js), щоб уникнути раптових breaking changes.
Повний конфігураційний файл Dependabot
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
day: monday
time: "09:00"
timezone: "Europe/Moscow"
open-pull-requests-limit: 10
groups:
dev-dependencies:
patterns:
- "@types/*"
- "eslint*"
- "prettier*"
- "jest*"
- "vitest*"
- "typescript"
update-types:
- "minor"
- "patch"
storybook:
patterns:
- "@storybook/*"
- "storybook"
ignore:
- dependency-name: "next"
update-types: ["version-update:semver-major"]
- dependency-name: "react"
update-types: ["version-update:semver-major"]
labels:
- "dependencies"
- "automated"
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
labels:
- "github-actions"
- "automated"
- package-ecosystem: docker
directory: /
schedule:
interval: monthly
labels:
- "docker"
- "automated"
- package-ecosystem: composer
directory: /
schedule:
interval: weekly
groups:
laravel:
patterns:
- "laravel/*"
Auto-merge патч-оновлень: покроково
Щоб автоматично приймати безпечні зміни, виконуємо кроки:
- Створюємо workflow-файл
.github/workflows/dependabot-auto-merge.yml. - Налаштовуємо permissions:
contents: write,pull-requests: write. - Додаємо перевірку, що PR створений Dependabot.
- Вказуємо правила злиття для dev і production залежностей.
- Використовуємо
gh pr merge --auto --squashдля автоматичного злиття після успішного CI.
Приклад workflow:
# .github/workflows/dependabot-auto-merge.yml
name: Auto-merge Dependabot PRs
on: pull_request
permissions:
contents: write
pull-requests: write
jobs:
auto-merge:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- name: Fetch Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Auto-merge dev dependency patches
if: |
steps.metadata.outputs.dependency-type == 'direct:development' &&
(steps.metadata.outputs.update-type == 'version-update:semver-patch' ||
steps.metadata.outputs.update-type == 'version-update:semver-minor')
run: gh pr merge --auto --squash "$PR_URL"
env:
PR_URL: ${{ github.event.pull_request.html_url }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Auto-merge production patches
if: |
steps.metadata.outputs.dependency-type == 'direct:production' &&
steps.metadata.outputs.update-type == 'version-update:semver-patch'
run: gh pr merge --auto --squash "$PR_URL"
env:
PR_URL: ${{ github.event.pull_request.html_url }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Workflow перевіряє, що PR створений Dependabot, потім зливає мінорні/патч-оновлення dev-залежностей і патч-оновлення production-залежностей після успішного CI.
Dependabot vs Renovate: коли вибрати що?
Renovate підтримує на 75% більше екосистем, ніж Dependabot: npm, Docker, Maven, Gradle, PyPI, Bundler та 20+ інших. Ось порівняння:
| Характеристика | Dependabot | Renovate |
|---|---|---|
| Підтримка екосистем | npm, GitHub Actions, Docker, Composer | npm, Docker, Maven, Gradle, PyPI, Bundler та 20+ інших |
| Групування PR | + (з моменту появи) | + (розширені правила) |
| Lock file maintenance | – | + |
| Semantic commits | – | + |
| Monorepo-підтримка | обмежена | повна |
| Авто-мердж | через workflow | вбудований (automerge: true) |
Renovate потужніший: підтримує lock file maintenance, pin versions, розширене групування та роботу з монорепозиторіями. Але Dependabot простіший у налаштуванні та вже інтегрований у GitHub. Ми рекомендуємо Dependabot для невеликих проєктів і Renovate для комплексних монорепозиторіїв із десятками пакетів.
Моніторинг безпеки в CI
Додатково до Dependabot ми впроваджуємо сканування вразливостей у пайплайні:
npm audit --audit-level=high
А також блокуємо PR із критичними вразливостями:
# .github/workflows/security.yml
- name: Security audit
run: |
npm audit --audit-level=critical --json > audit.json
CRITICAL=$(jq '.metadata.vulnerabilities.critical' audit.json)
if [ "$CRITICAL" -gt 0 ]; then
echo "Critical vulnerabilities found: $CRITICAL"
exit 1
fi
Це гарантує, що жоден PR із критичною вразливістю не потрапить у main. Детальніше про налаштування Dependabot читайте в офіційній документації.
Етапи налаштування автоматичних оновлень
| Етап | Опис | Орієнтовний термін |
|---|---|---|
| Аудит залежностей | Аналіз lock-файлів та поточних пакетів | 2–4 години |
| Конфігурація Dependabot/Renovate | Налаштування під ваш стек | 2–4 години |
| Групування PR і авто-мердж | Політики для dev/production | 1–2 години |
| Інтеграція з CI | Workflow GitHub Actions | 2–3 години |
| Тестування та документація | Перевірка стабільності | 1–2 години |
Підсумковий термін налаштування — від кількох годин до дня, залежно від складності стеку. Вартість розраховується індивідуально.
Ми налаштовуємо процес під ключ: від первинного аналізу до повного запуску. Наші інженери мають досвід роботи з проєктами, де кількість залежностей перевищує 500 пакетів, і гарантують стабільність після авто-оновлень.
Замовте налаштування автоматичного оновлення залежностей — отримайте консультацію щодо вашого проєкту.







