Застарілі залежності — джерело критичних вразливостей і технічного боргу. Ручне оновлення сотень пакетів раз на квартал віднімає дні та часто відкладається до авралів. Наприклад, проєкт із 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 пакетів, і гарантують стабільність після авто-оновлень.
Замовте налаштування автоматичного оновлення залежностей — отримайте консультацію щодо вашого проєкту.







