跳到主要内容

配置 Dependabot 安全更新

您可以使用 Dependabot 安全更新或手动拉取请求轻松更新易受攻击的依赖项。

谁可以使用此功能?

具有 **写入** 权限的用户

关于配置 Dependabot 安全更新

您可以为使用 Dependabot 警报和依赖关系图的任何代码库启用 Dependabot 安全更新。有关更多信息,请参阅“关于 Dependabot 安全更新”。

您可以为单个代码库或您的个人帐户或组织拥有的所有代码库启用或禁用 Dependabot 安全更新。有关在组织中启用安全功能的更多信息,请参阅“在您的组织中启用安全功能”。

注意

当为代码库启用 Dependabot 安全更新时,Dependabot 将自动尝试打开拉取请求以解决具有可用补丁的**所有**打开的 Dependabot 警报。如果您希望自定义 Dependabot 打开拉取请求的警报,则应将 Dependabot 安全更新保持**禁用**状态并创建自动分类规则。有关更多信息,请参阅“自定义自动分类规则以优先处理 Dependabot 警报”。

Dependabot 和所有相关功能均受 GitHub 服务条款 的约束。

支持的代码库

如果您的个人帐户或组织已为 Dependabot 安全更新启用了**为新的代码库自动启用**,则 GitHub 会自动为新创建的代码库启用 Dependabot 安全更新。有关更多信息,请参阅“管理代码库的 Dependabot 安全更新”。

如果您创建了启用了安全更新的代码库的 fork,GitHub 将自动为该 fork 禁用 Dependabot 安全更新。然后,您可以决定是否在特定 fork 上启用 Dependabot 安全更新。

如果您的代码库未启用安全更新,并且您不知道原因,请首先尝试使用以下过程部分中的说明启用它们。如果安全更新仍然不起作用,您可以通过 GitHub 支持门户 联系我们。

管理代码库的 Dependabot 安全更新

您可以为您的个人帐户或组织拥有的所有符合条件的代码库启用或禁用 Dependabot 安全更新。有关更多信息,请参阅“管理您的个人帐户的安全和分析设置”或“管理您的组织的安全和分析设置”。

您还可以为单个代码库启用或禁用 Dependabot 安全更新。

为单个代码库启用或禁用 Dependabot 安全更新

  1. 在 GitHub 上,导航到代码库的主页。

  2. 在您的代码库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后点击设置

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的“安全”部分,点击 代码安全和分析

  4. 在“代码安全和分析”下,“Dependabot 安全更新”的右侧,点击启用以启用该功能,或点击禁用以禁用它。对于公共仓库,如果该功能始终启用,则按钮会被禁用。

将 Dependabot 安全更新分组到单个拉取请求

为了减少您可能看到的拉取请求数量,您可以为您的仓库或组织启用分组安全更新。启用此功能后,Dependabot 将为每个包生态系统将安全更新分组到一个拉取请求中。为了使用分组安全更新,您必须首先启用以下功能

注意

首次启用分组安全更新时,Dependabot 将立即尝试创建分组拉取请求。您可能会注意到 Dependabot 关闭旧的拉取请求并打开新的拉取请求。

您可以通过以下一种或两种方式启用 Dependabot 安全更新的分组拉取请求。

  • 为了尽可能多地将可用的安全更新组合在一起(跨目录和每个生态系统),请在您的仓库的“代码安全和分析”设置中启用分组,或在您的组织的“代码安全”下的“全局设置”中启用分组。
  • 为了更精细地控制分组,例如按包名称、开发/生产依赖项、语义版本控制级别或跨每个生态系统的多个目录进行分组,请将配置选项添加到仓库中的dependabot.yml配置文件。

注意

如果您已在dependabot.yml文件中为 Dependabot 安全更新配置了分组规则,则所有可用的更新都将根据您指定的规则进行分组。只有当组织或仓库级别的分组安全更新设置也启用时,Dependabot 才会跨未在您的dependabot.yml中配置的那些目录进行分组。

启用或禁用单个仓库的分组 Dependabot 安全更新

仓库管理员可以为他们的仓库启用或禁用分组安全更新。更改仓库设置将覆盖任何默认的组织设置。在dependabot.yml文件中配置的分组规则将覆盖在组织或仓库级别启用或禁用分组安全更新的用户界面设置。

  1. 在 GitHub 上,导航到代码库的主页。

  2. 在您的代码库名称下,单击 设置。如果您看不到“设置”选项卡,请选择下拉菜单,然后点击设置

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的“安全”部分,点击 代码安全和分析

  4. 在“代码安全和分析”下,“分组安全更新”的右侧,点击启用以启用该功能,或点击禁用以禁用它。

启用或禁用组织的分组 Dependabot 安全更新

您可以将分组的 Dependabot 安全更新启用到单个拉取请求中。更多信息,请参见“配置组织的全局安全设置”。

使用配置文件覆盖默认行为

您可以通过向您的仓库添加dependabot.yml文件来覆盖 Dependabot 安全更新的默认行为。使用dependabot.yml文件,您可以更精细地控制分组,并覆盖 Dependabot 安全更新设置的默认行为。

使用applies-to: security-updates键中的groups选项来创建依赖项集(每个包管理器),以便 Dependabot 打开单个拉取请求以同时更新多个依赖项。您可以按包名称(patternsexclude-patterns键)、依赖项类型(dependency-type键)和语义版本控制(update-types键)定义组。

Dependabot 按它们在dependabot.yml文件中的出现顺序创建组。如果依赖项更新可能属于多个组,则它只会被分配给它匹配的第一个组。

如果您只需要安全更新并想要排除版本更新,您可以将open-pull-requests-limit设置为0,以防止给定package-ecosystem的版本更新。

有关安全更新可用的配置选项的更多信息,请参见“dependabot.yml 文件的配置选项”。

# Example configuration file that:
#  - Has a private registry
#  - Ignores lodash dependency
#  - Disables version-updates
#  - Defines a group by package name, for security updates for golang dependencies

version: 2
registries:
  example:
    type: npm-registry
    url: https://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:
      - example
  - package-ecosystem: "gomod"
    groups:
      golang:
        applies-to: security-updates
        patterns:
          - "golang.org*"

注意

为了让 Dependabot 将此配置用于安全更新,directory必须是清单文件的路径,并且您不应指定target-branch

进一步阅读