## 关于自定义安全更新的拉取请求

可以自定义 Dependabot 如何提出安全更新的拉取请求，使它们最适合项目的安全优先级和流程。 例如：

* **优化 Dependabot 拉取请求，通过将多个更新分组到单个拉取请求中，优先处理有意义的更新**。
* 应用自定义标签以**将 Dependabot 的拉取请求**整合到现有工作流中。

与版本更新类似，安全更新的自定义选项在 `dependabot.yml` 文件中定义。 如果已经为版本更新自定义了 `dependabot.yml`，则定义的许多配置选项也会自动适用于安全更新。 但是，需要注意以下几个要点：

* Dependabot security updates 始终由安全公告触发，而不是根据你在版本更新的 `dependabot.yml` 中设置的 `schedule` 运行\*\*\*\*。
* Dependabot 仅针对默认分支提出安全更新拉取请求\*\*\*\*。 如果配置设置了 `target-branch` 值，则该包生态系统的自定义项默认将仅适用于版本更新。

如果尚未为仓库配置 `dependabot.yml` 文件，并且想要自定义安全更新的拉取请求，则必须首先：

* 将 `dependabot.yml` 文件签入仓库的 `.github` 目录。 有关详细信息，请参阅“[配置 Dependabot 版本更新](/zh/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates#enabling-dependabot-version-updates)”。
* 设置所有必需的键。 有关详细信息，请参阅[必需的键](/zh/code-security/dependabot/working-with-dependabot/dependabot-options-reference#required-keys)。
* 如果希望包生态系统的自定义项仅适用于安全更新（并排除版本更新），请将 `open-pull-requests-limit` 键设置为 `0`\*\*\*\*。

然后，可以考虑安全更新的需求和优先级，并应用下面概述的自定义选项组合。

## 优先处理有意义的更新

若要创建针对性更强的审阅流程，以优先处理有意义的更新，请使用 `groups` 将多个依赖项的安全更新合并到单个拉取请求中\*\*\*\*。

有关详细指导，请参阅[优先处理有意义的更新](/zh/code-security/dependabot/dependabot-version-updates/optimizing-pr-creation-version-updates#prioritizing-meaningful-updates)。

## 自动添加审阅者和被分配者

> \[!IMPORTANT]
> `reviewers` 属性即将停用，将在 GitHub Enterprise Server 的未来版本中删除。
>
> 还可使用 CODEOWNERS 文件自动添加审阅者和被分派人。 请参阅“[关于代码所有者](/zh/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)”。

若要确保项目的安全更新得到相应团队的及时处理，请使用 `reviewers` 和 `assignees` 自动将个人或团队添加为拉取请求的审阅者或代理人\*\*\*\*\*\*\*\*。

有关详细指导，请参阅[自动添加审阅者和代理人](/zh/code-security/dependabot/dependabot-version-updates/customizing-dependabot-prs#automatically-adding-reviewers-and-assignees)。

## 使用自定义标签标记拉取请求

若要优先处理特定拉取请求，或将它们整合到 CI/CD 管道中，请使用 `labels` 将自己的自定义标签应用于每个拉取请求\*\*\*\*\*\*\*\*。

有关详细指导，请参阅[使用自定义标签标记拉取请求](/zh/code-security/dependabot/dependabot-version-updates/customizing-dependabot-prs#labeling-pull-requests-with-custom-labels)。

## 为提交消息添加前缀

若要整合处理提交消息或拉取请求标题的自动化，请使用 `commit-message` 指定提交消息和拉取请求标题所需的前缀\*\*\*\*。

有关详细指导，请参阅[为提交消息添加前缀](/zh/code-security/dependabot/dependabot-version-updates/customizing-dependabot-prs#adding-a-prefix-to-commit-messages).

## 将拉取请求与里程碑相关联

若要跟踪项目目标或发布的进度，可使用 `milestone` 将 Dependabot 的拉取请求与里程碑相关联\*\*\*\*。

有关详细指导，请参阅[将拉取请求与里程碑相关联](/zh/code-security/dependabot/dependabot-version-updates/customizing-dependabot-prs#associating-pull-requests-with-a-milestone)。

## 更改拉取请求分支名称中的分隔符

若要确保分支名称符合团队的现有约定，请使用 `pull-request-branch-name.separator` 指定你希望 Dependabot 用于分支名称的分隔符\*\*\*\*。

有关详细指导，请参阅[更改拉取请求分支名称中的分隔符](/zh/code-security/dependabot/dependabot-version-updates/customizing-dependabot-prs#changing-the-separator-in-the-pull-request-branch-name)。

## 示例 1：仅应用于安全更新的配置

在本示例中，`dependabot.yml` 文件：

* 为 npm 依赖项的更新使用专用注册表。
* 禁用依赖项的版本更新，使任何自定义项都仅应用于安全更新。
* 进行了自定义，使 Dependabot 将自定义标签应用于拉取请求，并自动添加被分派人。
* 将 golang 依赖项的安全更新分组到单个拉取请求中。

```yaml copy
# Example configuration file that:
#  - Uses a private registry for npm updates
#  - Ignores lodash dependency
#  - Disables version-updates
#  - Applies custom labels
#  - Adds assignees
#  - Group security updates for golang dependencies into a single pull request

version: 2
registries:
  # Define a private npm registry with the name `example`
  example:
    type: npm-registry
    url: http://example.com
    token: ${{secrets.NPM_TOKEN}}
updates:
  - package-ecosystem: "npm"
    directory: "/src/npm-project"
    schedule:
      interval: "daily"
    # For Lodash, ignore all updates
    ignore:
      - dependency-name: "lodash"
    # Disable version updates for npm dependencies
    open-pull-requests-limit: 0
    registries:
      # Ask Dependabot to use the private registry for npm
      - example
    # Raise all npm pull requests for security updates with custom labels
    labels:
      - "npm dependencies"
      - "triage-board"
    # Raise all npm pull requests for security updates with assignees
    assignees:
      - "user-name"
  - package-ecosystem: "gomod"
    groups:
      # Group security updates for golang dependencies
      # into a single pull request
      golang:
        applies-to: security-updates
        patterns:
          - "golang.org*"
```

## 示例 2：应用于版本更新和安全更新的配置

在本示例中，`dependabot.yml` 文件：

* 进行了自定义，使 Dependabot 向版本更新和安全更新添加自定义标签。
* 使用 `groups` 自定义选项创建两个组（`angular` 和 `production-dependencies`），以便将多个更新分组到单个拉取请求中。
* 指定 `angular` 的 `groups` 自定义项仅应用于安全更新。
* 指定 `production-dependencies` 的 `groups` 自定义项仅应用于版本更新。

```yaml copy
version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
# Raise all npm pull requests for security and version updates with custom labels
    labels:
      - "npm dependencies"
      - "triage-board"
    groups:
      angular:
        # Group security updates for Angular dependencies into a single pull request
        applies-to: security-updates
        patterns:
          - "@angular*"
      production-dependencies:
        # Group version updates for dependencies of type "production" into a single pull request
        applies-to: version-updates
        dependency-type: "production"
```

## 其他阅读材料

* [Dependabot 选项参考](/zh/code-security/dependabot/working-with-dependabot/dependabot-options-reference)
* [为 Dependabot 配置对专用注册表的访问权限](/zh/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot)