# Настройка запросов на вытягивание зависимостей для соответствия вашим процессам

Узнайте, как настроить запросы на вытягивание Dependabot, чтобы лучше соответствовать собственным внутренним рабочим процессам.

Существуют различные способы настройки Dependabot запросов на вытягивание, чтобы они лучше соответствовали собственным внутренним процессам.

Например, чтобы интегрировать Dependabotзапросы на вытягивание в конвейеры CI/CD, можно применить **пользовательские метки** к запросам на вытягивание, которые затем можно использовать для активации рабочих процессов действий.

Существует несколько различных вариантов настройки, которые можно использовать в сочетании и адаптировать для каждой экосистемы пакетов.

## Автоматическое добавление назначаемого

По умолчанию Dependabot вызывает запросы на вытягивание без каких-либо назначаемых.

Чтобы автоматически назначить запросы на вытягивание назначенной группе безопасности, можно использовать `assignees` для задания этих значений для каждой экосистемы пакетов.

Приведенный ниже пример `dependabot.yml` файла изменяет конфигурацию npm, чтобы все запросы на вытягивание, открытые с помощью обновлений версии и системы безопасности для npm, имели:

* Отдельный ("`user-name`") автоматически назначается запросам на вытягивание.

```yaml copy
# `dependabot.yml` file with
#  assignee for all npm pull requests

version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Raise all npm pull requests with assignees
    assignees:
      - "user-name"
```

## Автоматическое добавление рецензентов

По умолчанию Dependabot вызывает запросы на вытягивание без каких-либо рецензентов.

Чтобы обеспечить оперативное решение обновлений системы безопасности проекта соответствующими командами, вы можете автоматически добавлять рецензентов в Dependabot запросы на вытягивание с помощью файла CODEOWNERS. См [. раздел AUTOTITLE](/ru/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners).

## Добавление меток на запросы на вытягивание с помощью пользовательских меток

По умолчанию Dependabot вызывает запросы на вытягивание с `dependencies` меткой.

Dependabotтакже применяет метку экосистемы, например `java``npm`, или запросы `github-actions`на вытягивание.
Dependabot добавляет метку и метку экосистемы `dependencies` ко всем запросам на вытягивание, включая обновления с одной экосистемой, для улучшения фильтрации и триуна.

Dependabot создает метки по умолчанию, которые применяются к запросам на вытягивание, если они еще не существуют в репозитории. Если вы хотите использовать пользовательские метки вместо меток по умолчанию, вы можете установить этот `labels` параметр в экосистеме `dependabot.yml` файлов для каждого пакета; это переопределяет значения по умолчанию. Дополнительные сведения см. в разделе [Управление метками](/ru/issues/using-labels-and-milestones-to-track-work/managing-labels) и`labels`[](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#labels--) .

Если метки семантической версии (SemVer) присутствуют в репозитории, Dependabot они также будут автоматически применяться для указания типа обновления версии (`major`или`minor``patch`). Эти метки применяются в дополнение к любым пользовательским меткам, которые вы определяете.

Вы можете использовать `labels` для переопределения меток по умолчанию и указания собственных пользовательских меток для каждой экосистемы пакетов. Это полезно, если, например, вы хотите:

* Используйте метки для назначения приоритета определенным запросам на вытягивание.
* Используйте метки для активации другого рабочего процесса, например автоматического добавления запроса на вытягивание в доска проекта.

Приведенный ниже пример `dependabot.yml` файла изменяет конфигурацию npm, чтобы все запросы на вытягивание, открытые с помощью обновлений версии и системы безопасности для npm, имели пользовательские метки.

```yaml copy
# `dependabot.yml` file with
# customized npm configuration

version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Raise all npm pull requests with custom labels
    labels:
      - "npm dependencies"
      - "triage-board"
```

Установка этого параметра также влияет на запросы на вытягивание обновлений системы безопасности для файлов манифеста этого диспетчера пакетов, если только вы не используете `target-branch` для проверки наличия обновлений версий в ветви, отличной от ветви по умолчанию.

См. также [`labels`](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#labels--).

## Добавление префикса для фиксации сообщений

По умолчанию пытается обнаружить настройки сообщения фиксации Dependabot и использовать аналогичные шаблоны. Кроме того, Dependabot заполняет заголовки запросов на вытягивание на основе сообщений фиксации.

Вы можете указать собственный префикс для Dependabotсообщений фиксации (и заголовков запросов на вытягивание) для конкретной экосистемы пакетов. Это может быть полезно, если, например, выполняется автоматизация, обрабатывающая сообщения о фиксации сообщений или заголовки запросов на вытягивание.

Чтобы явно указать параметры, используйте `commit-message` следующие поддерживаемые параметры:

* `prefix`:
  * Задает префикс для всех сообщений фиксации.
  * Префикс также добавляется в начало заголовка запроса на вытягивание.
* `prefix-development`:
  * Задает отдельный префикс для всех сообщений фиксации, которые обновляют зависимости разработки, как определено диспетчером пакетов или экосистемой.
  * Поддерживается для `bundler`, , `maven``npm``pip``composer``mix`и .`uv`
* `include: "scope"`:
  * Указывает, что за любым префиксом следует типы зависимостей (`deps` или `deps-dev`) обновлены в фиксации.

В приведенном ниже примере показаны несколько различных вариантов, адаптированных для каждой экосистемы пакетов:

```yaml copy
# Customize commit messages

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    commit-message:
      # Prefix all commit messages with "npm: "
      prefix: "npm"

  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"
    commit-message:
      # Prefix all commit messages with "[docker] " (no colon, but a trailing whitespace)
      prefix: "[docker] "

  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      interval: "weekly"
    # Prefix all commit messages with "Composer" plus its scope, that is, a
    # list of updated dependencies
    commit-message:
      prefix: "Composer"
      include: "scope"

  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
    # Include a list of updated dependencies
    # with a prefix determined by the dependency group
    commit-message:
      prefix: "pip prod"
      prefix-development: "pip dev"
```

Установка этого параметра также влияет на запросы на вытягивание обновлений системы безопасности для файлов манифеста этого диспетчера пакетов, если только вы не используете `target-branch` для проверки наличия обновлений версий в ветви, отличной от ветви по умолчанию.

См. также [`commit-message`](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#commit-message--).

## Связывание запросов на вытягивание с вехой

Вехи помогают отслеживать ход выполнения групп запросов на вытягивание (или проблемы) в направлении цели проекта или выпуска. С помощью Dependabot`milestone` этого параметра можно связать запросы на вытягивание обновлений зависимостей с определенной вехой.

Необходимо указать числовой идентификатор вехи, а не метку. Чтобы найти числовый идентификатор, проверьте последнюю часть URL-адреса `milestone`страницы. Например, "`https://github.com/<org>/<repo>/milestone/3``3`" — это числовый идентификатор вехи.

```yaml copy
# Specify a milestone for pull requests

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Associate pull requests with milestone "4"
    milestone: 4
```

Установка этого параметра также влияет на запросы на вытягивание обновлений системы безопасности для файлов манифеста этого диспетчера пакетов, если только вы не используете `target-branch` для проверки наличия обновлений версий в ветви, отличной от ветви по умолчанию.

См. также [`milestone`](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#milestone--) и [AUTOTITLE.](/ru/issues/using-labels-and-milestones-to-track-work/about-milestones)

## Настройка имен ветвей запроса на вытягивание

Dependabot создает ветвь для каждого запроса на вытягивание. Каждое имя ветви включает в себя `dependabot`, а также имя диспетчера пакетов и зависимость, которая должна быть обновлена. По умолчанию эти части имени ветви разделяются символом `/` , например:

* `dependabot/npm_and_yarn/next_js/acorn-6.4.1`

Имена ветвей можно настроить с помощью `pull-request-branch-name` параметра с помощью следующих параметров: `separator`, , `prefix`, `max-length``word-separator`, `branch-name-case`и `template`. Все варианты доступны для создания, и их можно объединить. Полный справочник по каждому параметру см. в разделе [`pull-request-branch-name`](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#pull-request-branch-name--).

### Объединение параметров форматирования

Вы можете объединить `separator`, , `word-separator``branch-name-case``max-length`и `template` создать имена ветвей, которые соответствуют требованиям вашей системы. Например, совместимость тегов Docker, Реестр контейнеров Azure именование или ограничения длины ветви Kubernetes.

При `template` настройке наряду с другими параметрами форматирование применяется как после обработки после отрисовки шаблона в этом порядке: замена разделителя, замена разделителя слов, преобразование регистра, а затем усечение максимальной длины.

```yaml copy
# Combine template with formatting options

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    pull-request-branch-name:
      template: "{prefix}/{package_manager}/{dependency}-{version}"
      separator: "-"
      word-separator: "-"
      branch-name-case: "lowercase"
      max-length: 80
```

* **До** (по умолчанию): `dependabot/npm_and_yarn/Lodash-4.17.21`
* **После** (с приведенной выше конфигурацией): `dependabot-npm-and-yarn-lodash-4.17.21`

При превышении `max-length`имени ветви он усечен хэш-суффиксом для сохранения уникальности.

### Полный пример с группами с несколькими экосистемами

`dependabot.yml` Ниже показаны все доступные варианты в разных экосистемах, включая конфигурацию группы с несколькими экосистемами:

```yaml copy
# Full example demonstrating all branch name options

version: 2

multi-ecosystem-groups:
  infrastructure:
    schedule:
      interval: "weekly"
    pull-request-branch-name:
      template: "{prefix}/infra/{name}"
      word-separator: "-"
      branch-name-case: "lowercase"

updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    pull-request-branch-name:
      separator: "-"
      word-separator: "-"
      branch-name-case: "lowercase"
    groups:
      frontend-deps:
        patterns: ["react*", "next*"]

  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "monthly"
    pull-request-branch-name:
      template: "{prefix}/{package_manager}/{dependency}-{version}"
      max-length: 60

  - package-ecosystem: "pip"
    directory: "/backend"
    schedule:
      interval: "weekly"
    pull-request-branch-name:
      prefix: "deps"
      branch-name-case: "lowercase"
    groups:
      django-deps:
        patterns: ["django*"]

  # These entries participate in the "infrastructure" multi-ecosystem group
  - package-ecosystem: "docker"
    directory: "/infra"
    patterns: ["nginx", "redis", "postgres"]
    multi-ecosystem-group: "infrastructure"

  - package-ecosystem: "terraform"
    directory: "/infra"
    patterns: ["hashicorp/*"]
    multi-ecosystem-group: "infrastructure"
```

Эта конфигурация создает следующие имена ветвей:

| Сценарий                                                      | Strategy                   | Имя ветви                                          |
| ------------------------------------------------------------- | -------------------------- | -------------------------------------------------- |
| обновление npm для lodash                                     | Solo                       | `dependabot-npm-and-yarn-lodash-4.17.21`           |
| Обновление группы npm frontend-deps                           | Сгруппированный            | `dependabot-npm-and-yarn-frontend-deps-fc93691fd4` |
| nginx solo Docker update                                      | Solo                       | `dependabot/docker/nginx-1.25.0`                   |
| pip Django update                                             | Solo                       | `deps/pip/django-4.2.1`                            |
| Обновление группы pip django-deps                             | Сгруппированный            | `deps/pip/django-deps-a1b2c3d4e5`                  |
| Группа инфраструктуры между экосистемами (Docker + Terraform) | Многоэкоционная экосистема | `dependabot/infra/infrastructure-fc93691fd4`       |

> \[!NOTE]
> Для групп с несколькими экосистемами:
> \*
> `pull-request-branch-name` В `multi-ecosystem-groups` записи определяется имя сгруппированного межэкосистемного pr-филиала.
>
> * Отдельные `updates` записи, которые указывают `multi-ecosystem-group`**, не могут** иметь собственные `pull-request-branch-name`. Конфигурация уровня группы имеет приоритет и является единственной, используемой для этих записей.
> *

`{package_manager}` недоступно в шаблонах групп с несколькими экосистемами, так как группа охватывает несколько экосистем.

> * Дайджест содержимого всегда автоматически добавляется к ветвям групп с несколькими экосистемами, чтобы гарантировать уникальность.

### Применение конфигурации имени ветви

* **Конфигурация выполняется для каждой записи обновления**: каждая автономная `package-ecosystem` запись может иметь собственную конфигурацию имени ветви. Записи, назначенные группе с несколькими экосистемами, используют конфигурацию уровня группы.
* **Существующие PR не затрагиваются**: изменения применяются только к только что созданным PR.
* **Поведение по умолчанию не изменяется**: если вы не настраиваете какие-либо параметры, имена ветвей остаются точно так же, как и сегодня.

Установка этого параметра также влияет на запросы на вытягивание обновлений системы безопасности для файлов манифеста этого диспетчера пакетов, если только вы не используете `target-branch` для проверки наличия обновлений версий в ветви, отличной от ветви по умолчанию.

## Назначение запросов на вытягивание для не ветвь по умолчанию

По умолчанию проверяет наличие файлов манифеста в ветви по умолчанию Dependabot и вызывает запросы на вытягивание обновлений для ветви по умолчанию.

Как правило, рекомендуется хранить Dependabotпроверки и обновления в ветви по умолчанию. Однако в некоторых случаях может потребоваться указать другую целевую ветвь. Если, например, процессы вашей команды требуют, чтобы сначала протестировать и проверить обновления в нерабочей ветви, можно указать `target-branch` другую ветвь для Dependabot получения запросов на вытягивание.

> \[!NOTE]
> Dependabot Поднимает pull запросы на обновления безопасности **только на стандартной ветке**. Если вы используете `target-branch`, то в результате все параметры конфигурации для этого диспетчера пакетов будут *применяться только* к обновлениям версий, а не к обновлениям системы безопасности.

```yaml copy
# Specify a non-default branch for pull requests for pip

version: 2
updates:
  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
    # Raise pull requests for version updates
    # to pip against the `develop` branch
    target-branch: "develop"
    # Labels on pull requests for version updates only
    labels:
      - "pip dependencies"

  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      # Check for npm updates on Sundays
      day: "sunday"
    # Labels on pull requests for security and version updates
    labels:
      - "npm dependencies"
```

См. также [`target-branch`](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#target-branch-).