На главную

Контейнеры и CI/CD

Конфиг автообновления зависимостей

Конфиг автообновления зависимостей: расписание, лимит одновременных запросов, выдержка версии и правила автослияния. Renovate — и тот же набор для Dependabot.

Когда и сколько

Расписание считается по нему

Свежий релиз игнорируется, пока не отлежится

Через запятую

Логин на GitHub, можно пусто

Что сливать без человека

renovate.json

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:recommended",
    ":semanticCommits",
    ":dependencyDashboard"
  ],
  "timezone": "Europe/Moscow",
  "schedule": [
    "before 9am on monday"
  ],
  "prConcurrentLimit": 3,
  "prHourlyLimit": 2,
  "minimumReleaseAge": "3 days",
  "labels": [
    "dependencies"
  ],
  "lockFileMaintenance": {
    "enabled": true,
    "schedule": [
      "before 9am on the first day of the month"
    ]
  },
  "vulnerabilityAlerts": {
    "labels": [
      "security"
    ],
    "schedule": []
  },
  "packageRules": [
    {
      "description": "Инструменты разработки обновляются сами",
      "matchDepTypes": [
        "devDependencies"
      ],
      "matchUpdateTypes": [
        "minor",
        "patch"
      ],
      "automerge": true
    },
    {
      "description": "Мелкие обновления одной пачкой",
      "matchUpdateTypes": [
        "minor",
        "patch"
      ],
      "groupName": "мелкие обновления"
    },
    {
      "description": "Крупные версии — по одной и с разбором",
      "matchUpdateTypes": [
        "major"
      ],
      "automerge": false,
      "labels": [
        "major"
      ]
    }
  ]
}

То же для Dependabot

.github/dependabot.yml

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 3
    labels:
      - "dependencies"
    groups:
      minor-and-patch:
        update-types:
          - "minor"
          - "patch"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "monthly"

Dependabot умеет заметно меньше: у него нет выдержки версии и автослияния — слияние настраивается отдельным правилом репозитория. Поэтому конфиг короче, а не потому, что что-то потерялось.