跳至主要内容

配置 Dependabot 安全更新

您可以使用 Dependabot 安全更新或手动拉取请求来轻松更新有漏洞的依赖项。

谁可以使用此功能?

具有 写入 访问权限的用户

管理您仓库的 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. 在侧边栏的Security部分,点击 Advanced Security

  4. 在 “Dependabot 安全更新” 右侧,单击 启用 以开启此功能,或单击 禁用 以关闭它。对于公共仓库,如果此功能始终启用,则按钮会被禁用。

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

要使用分组安全更新,您必须首先启用以下功能

注意

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

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

  • 要尽可能多地将可用的安全更新分组在一起(跨目录和每个生态系统),请在仓库的 “高级安全” 设置中启用分组,或在组织的 “高级安全” 全局设置中启用分组。
  • 若需更细粒度的分组控制(例如按包名、开发/生产依赖、SemVer 级别,或按每个生态系统的多个目录进行分组),请在仓库中向 dependabot.yml 配置文件添加相应的配置选项。

注意

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

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

  1. 在 GitHub 上,导航至仓库的主页面。

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

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

  3. 在侧边栏的Security部分,点击 Advanced Security

  4. 在 “Dependabot” 下方的 “分组安全更新” 右侧,单击 启用 以开启此功能,或单击 禁用 以关闭它。

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

您可以将分组 Dependabot 安全更新合并为单个拉取请求。有关更多信息,请参阅 配置组织的全局安全设置

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

您可以通过在仓库中添加 dependabot.yml 文件来覆盖 Dependabot 安全更新的默认行为。借助该文件,您可以对分组进行更细粒度的控制,并覆盖 Dependabot 安全更新设置的默认行为。

使用带有 applies-to: security-updates 键的 groups 选项来为每个包管理器创建依赖集,从而让 Dependabot 在一次拉取请求中同时更新多个依赖。您可以通过包名(patternsexclude-patterns 键)、依赖类型(dependency-type 键)以及 SemVer(update-types 键)来定义分组。

Dependabot 会按照 dependabot.yml 文件中出现的顺序创建分组。如果某个依赖更新可以属于多个分组,它只会被分配到第一个匹配的分组。

如果您只需要 安全 更新并希望排除 版本 更新,可将 open-pull-requests-limit 设置为 0,以阻止针对特定 package-ecosystem 的版本更新。

有关安全更新可用配置选项的更多信息,请参阅 自定义 Dependabot 安全更新的拉取请求

YAML
# 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"
    directories:
      - "**/*"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 0
    groups:
      golang:
        applies-to: security-updates
        patterns:
          - "golang.org*"

注意

为了让 Dependabot 使用此安全更新配置,directory 必须指向清单文件所在的路径(或 directories 必须包含匹配清单文件位置的路径或全局模式),并且不应指定 target-branch

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.