{"meta":{"title":"Настройка запросов на вытягивание зависимостей для соответствия вашим процессам","intro":"Узнайте, как настроить запросы на вытягивание Dependabot, чтобы лучше соответствовать собственным внутренним рабочим процессам.","product":"Безопасность и качество кода","breadcrumbs":[{"href":"/ru/code-security","title":"Безопасность и качество кода"},{"href":"/ru/code-security/tutorials","title":"Tutorials"},{"href":"/ru/code-security/tutorials/secure-your-dependencies","title":"Защита зависимостей"},{"href":"/ru/code-security/tutorials/secure-your-dependencies/customizing-dependabot-prs","title":"Настройка зависимостей PR"}],"documentType":"article"},"body":"# Настройка запросов на вытягивание зависимостей для соответствия вашим процессам\n\nУзнайте, как настроить запросы на вытягивание Dependabot, чтобы лучше соответствовать собственным внутренним рабочим процессам.\n\nСуществуют различные способы настройки Dependabot запросов на вытягивание, чтобы они лучше соответствовали собственным внутренним процессам.\n\nНапример, чтобы интегрировать Dependabotзапросы на вытягивание в конвейеры CI/CD, можно применить **пользовательские метки** к запросам на вытягивание, которые затем можно использовать для активации рабочих процессов действий.\n\nСуществует несколько различных вариантов настройки, которые можно использовать в сочетании и адаптировать для каждой экосистемы пакетов.\n\n## Автоматическое добавление назначаемого\n\nПо умолчанию Dependabot вызывает запросы на вытягивание без каких-либо назначаемых.\n\nЧтобы автоматически назначить запросы на вытягивание назначенной группе безопасности, можно использовать `assignees` для задания этих значений для каждой экосистемы пакетов.\n\nПриведенный ниже пример `dependabot.yml` файла изменяет конфигурацию npm, чтобы все запросы на вытягивание, открытые с помощью обновлений версии и системы безопасности для npm, имели:\n\n* Отдельный (\"`user-name`\") автоматически назначается запросам на вытягивание.\n\n```yaml copy\n# `dependabot.yml` file with\n#  assignee for all npm pull requests\n\nversion: 2\nupdates:\n  # Keep npm dependencies up to date\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    # Raise all npm pull requests with assignees\n    assignees:\n      - \"user-name\"\n```\n\n## Автоматическое добавление рецензентов\n\nПо умолчанию Dependabot вызывает запросы на вытягивание без каких-либо рецензентов.\n\nЧтобы обеспечить оперативное решение обновлений системы безопасности проекта соответствующими командами, вы можете автоматически добавлять рецензентов в Dependabot запросы на вытягивание с помощью файла CODEOWNERS. См [. раздел AUTOTITLE](/ru/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners).\n\n## Добавление меток на запросы на вытягивание с помощью пользовательских меток\n\nПо умолчанию Dependabot вызывает запросы на вытягивание с `dependencies` меткой.\n\nDependabotтакже применяет метку экосистемы, например `java``npm`, или запросы `github-actions`на вытягивание.\nDependabot добавляет метку и метку экосистемы `dependencies` ко всем запросам на вытягивание, включая обновления с одной экосистемой, для улучшения фильтрации и триуна.\n\nDependabot создает метки по умолчанию, которые применяются к запросам на вытягивание, если они еще не существуют в репозитории. Если вы хотите использовать пользовательские метки вместо меток по умолчанию, вы можете установить этот `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--) .\n\nЕсли метки семантической версии (SemVer) присутствуют в репозитории, Dependabot они также будут автоматически применяться для указания типа обновления версии (`major`или`minor``patch`). Эти метки применяются в дополнение к любым пользовательским меткам, которые вы определяете.\n\nВы можете использовать `labels` для переопределения меток по умолчанию и указания собственных пользовательских меток для каждой экосистемы пакетов. Это полезно, если, например, вы хотите:\n\n* Используйте метки для назначения приоритета определенным запросам на вытягивание.\n* Используйте метки для активации другого рабочего процесса, например автоматического добавления запроса на вытягивание в доска проекта.\n\nПриведенный ниже пример `dependabot.yml` файла изменяет конфигурацию npm, чтобы все запросы на вытягивание, открытые с помощью обновлений версии и системы безопасности для npm, имели пользовательские метки.\n\n```yaml copy\n# `dependabot.yml` file with\n# customized npm configuration\n\nversion: 2\nupdates:\n  # Keep npm dependencies up to date\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    # Raise all npm pull requests with custom labels\n    labels:\n      - \"npm dependencies\"\n      - \"triage-board\"\n```\n\nУстановка этого параметра также влияет на запросы на вытягивание обновлений системы безопасности для файлов манифеста этого диспетчера пакетов, если только вы не используете `target-branch` для проверки наличия обновлений версий в ветви, отличной от ветви по умолчанию.\n\nСм. также [`labels`](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#labels--).\n\n## Добавление префикса для фиксации сообщений\n\nПо умолчанию пытается обнаружить настройки сообщения фиксации Dependabot и использовать аналогичные шаблоны. Кроме того, Dependabot заполняет заголовки запросов на вытягивание на основе сообщений фиксации.\n\nВы можете указать собственный префикс для Dependabotсообщений фиксации (и заголовков запросов на вытягивание) для конкретной экосистемы пакетов. Это может быть полезно, если, например, выполняется автоматизация, обрабатывающая сообщения о фиксации сообщений или заголовки запросов на вытягивание.\n\nЧтобы явно указать параметры, используйте `commit-message` следующие поддерживаемые параметры:\n\n* `prefix`:\n  * Задает префикс для всех сообщений фиксации.\n  * Префикс также добавляется в начало заголовка запроса на вытягивание.\n* `prefix-development`:\n  * Задает отдельный префикс для всех сообщений фиксации, которые обновляют зависимости разработки, как определено диспетчером пакетов или экосистемой.\n  * Поддерживается для `bundler`, , `composer``mix``maven``npm``pip`и .`uv`\n* `include: \"scope\"`:\n  * Указывает, что за любым префиксом следует типы зависимостей (`deps` или `deps-dev`) обновлены в фиксации.\n\nВ приведенном ниже примере показаны несколько различных вариантов, адаптированных для каждой экосистемы пакетов:\n\n```yaml copy\n# Customize commit messages\n\nversion: 2\nupdates:\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    commit-message:\n      # Prefix all commit messages with \"npm: \"\n      prefix: \"npm\"\n\n  - package-ecosystem: \"docker\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    commit-message:\n      # Prefix all commit messages with \"[docker] \" (no colon, but a trailing whitespace)\n      prefix: \"[docker] \"\n\n  - package-ecosystem: \"composer\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    # Prefix all commit messages with \"Composer\" plus its scope, that is, a\n    # list of updated dependencies\n    commit-message:\n      prefix: \"Composer\"\n      include: \"scope\"\n\n  - package-ecosystem: \"pip\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    # Include a list of updated dependencies\n    # with a prefix determined by the dependency group\n    commit-message:\n      prefix: \"pip prod\"\n      prefix-development: \"pip dev\"\n```\n\nУстановка этого параметра также влияет на запросы на вытягивание обновлений системы безопасности для файлов манифеста этого диспетчера пакетов, если только вы не используете `target-branch` для проверки наличия обновлений версий в ветви, отличной от ветви по умолчанию.\n\nСм. также [`commit-message`](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#commit-message--).\n\n## Связывание запросов на вытягивание с вехой\n\nВехи помогают отслеживать ход выполнения групп запросов на вытягивание (или проблемы) в направлении цели проекта или выпуска. С помощью Dependabot`milestone` этого параметра можно связать запросы на вытягивание обновлений зависимостей с определенной вехой.\n\nНеобходимо указать числовой идентификатор вехи, а не метку. Чтобы найти числовый идентификатор, проверьте последнюю часть URL-адреса `milestone`страницы. Например, \"`https://github.com/<org>/<repo>/milestone/3``3`\" — это числовый идентификатор вехи.\n\n```yaml copy\n# Specify a milestone for pull requests\n\nversion: 2\nupdates:\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    # Associate pull requests with milestone \"4\"\n    milestone: 4\n```\n\nУстановка этого параметра также влияет на запросы на вытягивание обновлений системы безопасности для файлов манифеста этого диспетчера пакетов, если только вы не используете `target-branch` для проверки наличия обновлений версий в ветви, отличной от ветви по умолчанию.\n\nСм. также [`milestone`](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#milestone--) и [AUTOTITLE.](/ru/issues/using-labels-and-milestones-to-track-work/about-milestones)\n\n## Настройка имен ветвей запроса на вытягивание\n\nDependabot создает ветвь для каждого запроса на вытягивание. Каждое имя ветви включает в себя `dependabot`, а также имя диспетчера пакетов и зависимость, которая должна быть обновлена. По умолчанию эти части имени ветви разделяются символом `/` , например:\n\n* `dependabot/npm_and_yarn/next_js/acorn-6.4.1`\n\nИмена ветвей можно настроить с помощью `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--).\n\n### Объединение параметров форматирования\n\nВы можете объединить `separator`, , `word-separator``branch-name-case``max-length`и `template` создать имена ветвей, которые соответствуют требованиям вашей системы. Например, совместимость тегов Docker, Реестр контейнеров Azure именование или ограничения длины ветви Kubernetes.\n\nПри `template` настройке наряду с другими параметрами форматирование применяется как после обработки после отрисовки шаблона в этом порядке: замена разделителя, замена разделителя слов, преобразование регистра, а затем усечение максимальной длины.\n\n```yaml copy\n# Combine template with formatting options\n\nversion: 2\nupdates:\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    pull-request-branch-name:\n      template: \"{prefix}/{package_manager}/{dependency}-{version}\"\n      separator: \"-\"\n      word-separator: \"-\"\n      branch-name-case: \"lowercase\"\n      max-length: 80\n```\n\n* **До** (по умолчанию): `dependabot/npm_and_yarn/Lodash-4.17.21`\n* **После** (с приведенной выше конфигурацией): `dependabot-npm-and-yarn-lodash-4.17.21`\n\nПри превышении `max-length`имени ветви он усечен хэш-суффиксом для сохранения уникальности.\n\n### Полный пример с группами с несколькими экосистемами\n\n`dependabot.yml` Ниже показаны все доступные варианты в разных экосистемах, включая конфигурацию группы с несколькими экосистемами:\n\n```yaml copy\n# Full example demonstrating all branch name options\n\nversion: 2\n\nmulti-ecosystem-groups:\n  infrastructure:\n    schedule:\n      interval: \"weekly\"\n    pull-request-branch-name:\n      template: \"{prefix}/infra/{name}\"\n      word-separator: \"-\"\n      branch-name-case: \"lowercase\"\n\nupdates:\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    pull-request-branch-name:\n      separator: \"-\"\n      word-separator: \"-\"\n      branch-name-case: \"lowercase\"\n    groups:\n      frontend-deps:\n        patterns: [\"react*\", \"next*\"]\n\n  - package-ecosystem: \"docker\"\n    directory: \"/\"\n    schedule:\n      interval: \"monthly\"\n    pull-request-branch-name:\n      template: \"{prefix}/{package_manager}/{dependency}-{version}\"\n      max-length: 60\n\n  - package-ecosystem: \"pip\"\n    directory: \"/backend\"\n    schedule:\n      interval: \"weekly\"\n    pull-request-branch-name:\n      prefix: \"deps\"\n      branch-name-case: \"lowercase\"\n    groups:\n      django-deps:\n        patterns: [\"django*\"]\n\n  # These entries participate in the \"infrastructure\" multi-ecosystem group\n  - package-ecosystem: \"docker\"\n    directory: \"/infra\"\n    patterns: [\"nginx\", \"redis\", \"postgres\"]\n    multi-ecosystem-group: \"infrastructure\"\n\n  - package-ecosystem: \"terraform\"\n    directory: \"/infra\"\n    patterns: [\"hashicorp/*\"]\n    multi-ecosystem-group: \"infrastructure\"\n```\n\nЭта конфигурация создает следующие имена ветвей:\n\n| Сценарий                                                      | Strategy                   | Имя ветви                                          |\n| ------------------------------------------------------------- | -------------------------- | -------------------------------------------------- |\n| обновление npm для lodash                                     | Solo                       | `dependabot-npm-and-yarn-lodash-4.17.21`           |\n| Обновление группы npm frontend-deps                           | Сгруппированный            | `dependabot-npm-and-yarn-frontend-deps-fc93691fd4` |\n| nginx solo Docker update                                      | Solo                       | `dependabot/docker/nginx-1.25.0`                   |\n| pip Django update                                             | Solo                       | `deps/pip/django-4.2.1`                            |\n| Обновление группы pip django-deps                             | Сгруппированный            | `deps/pip/django-deps-a1b2c3d4e5`                  |\n| Группа инфраструктуры между экосистемами (Docker + Terraform) | Многоэкоционная экосистема | `dependabot/infra/infrastructure-fc93691fd4`       |\n\n> \\[!NOTE]\n> Для групп с несколькими экосистемами:\n> \\*\n> `pull-request-branch-name` В `multi-ecosystem-groups` записи определяется имя сгруппированного межэкосистемного pr-филиала.\n>\n> * Отдельные `updates` записи, которые указывают `multi-ecosystem-group`**, не могут** иметь собственные `pull-request-branch-name`. Конфигурация уровня группы имеет приоритет и является единственной, используемой для этих записей.\n> *\n\n`{package_manager}` недоступно в шаблонах групп с несколькими экосистемами, так как группа охватывает несколько экосистем.\n\n> * Дайджест содержимого всегда автоматически добавляется к ветвям групп с несколькими экосистемами, чтобы гарантировать уникальность.\n\n### Применение конфигурации имени ветви\n\n* **Конфигурация выполняется для каждой записи обновления**: каждая автономная `package-ecosystem` запись может иметь собственную конфигурацию имени ветви. Записи, назначенные группе с несколькими экосистемами, используют конфигурацию уровня группы.\n* **Существующие PR не затрагиваются**: изменения применяются только к только что созданным PR.\n* **Поведение по умолчанию не изменяется**: если вы не настраиваете какие-либо параметры, имена ветвей остаются точно так же, как и сегодня.\n\nУстановка этого параметра также влияет на запросы на вытягивание обновлений системы безопасности для файлов манифеста этого диспетчера пакетов, если только вы не используете `target-branch` для проверки наличия обновлений версий в ветви, отличной от ветви по умолчанию.\n\n## Назначение запросов на вытягивание для не ветвь по умолчанию\n\nПо умолчанию проверяет наличие файлов манифеста в ветви по умолчанию Dependabot и вызывает запросы на вытягивание обновлений для ветви по умолчанию.\n\nКак правило, рекомендуется хранить Dependabotпроверки и обновления в ветви по умолчанию. Однако в некоторых случаях может потребоваться указать другую целевую ветвь. Если, например, процессы вашей команды требуют, чтобы сначала протестировать и проверить обновления в нерабочей ветви, можно указать `target-branch` другую ветвь для Dependabot получения запросов на вытягивание.\n\n> \\[!NOTE]\n> Dependabot Поднимает pull запросы на обновления безопасности **только на стандартной ветке**. Если вы используете `target-branch`, то в результате все параметры конфигурации для этого диспетчера пакетов будут *применяться только* к обновлениям версий, а не к обновлениям системы безопасности.\n\n```yaml copy\n# Specify a non-default branch for pull requests for pip\n\nversion: 2\nupdates:\n  - package-ecosystem: \"pip\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    # Raise pull requests for version updates\n    # to pip against the `develop` branch\n    target-branch: \"develop\"\n    # Labels on pull requests for version updates only\n    labels:\n      - \"pip dependencies\"\n\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n      # Check for npm updates on Sundays\n      day: \"sunday\"\n    # Labels on pull requests for security and version updates\n    labels:\n      - \"npm dependencies\"\n```\n\nСм. также [`target-branch`](/ru/code-security/reference/supply-chain-security/dependabot-options-reference#target-branch-)."}