阅读(2774) (1)

GitHub 启用和禁用版本更新

2020-08-19 15:33:20 更新

您可以配置仓库,以便 GitHub Dependabot 自动更新您使用的包。

拥有仓库写入权限的用户可以启用或禁用仓库的 GitHub Dependabot 版本更新。

注: GitHub Dependabot 版本更新 目前处于测试阶段,可能会有变动。 要使用测试版功能,请按照本文的说明操作。

关于依赖项的版本更新

您可以通过将Repository.yml配置文件检入存储库的.github目录中来启用GitHub Dependabot版本更新。 然后,Dependabot发出拉取请求,以使您配置的依赖项保持最新。对于您想更新的每个包管理器的依赖项,必须指定包清单文件的位置及为文件所列的依赖项检查更新的频率。 有关启用安全更新的信息,请参阅“配置 GitHub Dependabot 安全更新。”

首次启用版本更新时,您可能有很多过时的依赖项,其中一些可能为许多落后于最新版本的版本。GitHub Dependabot启用后立即检查过时的依赖关系。根据您配置更新的清单文件的数量,您可能会在添加配置文件后几分钟内看到新的版本更新拉取请求。

为了使拉取请求易于管理并易于查看,Dependabot最多提出五个拉取请求,以开始将依赖项升级到最新版本。如果您在下次预定更新之前合并第一批拉取请求中的一些请求,则接下来的拉取请求最多可以打开五个(您可以更改此限制)。 更多信息请参阅“自定义依赖项更新。”

启用 GitHub Dependabot 版本更新

当前,GitHub Dependabot版本更新不支持包含任何私有git依赖项或私有git注册表的清单或锁定文件。这是因为,在运行版本更新时,Dependabot必须能够从其源中解析所有依赖项,以验证版本更新是否成功。但是,如果要为依赖清单或包含私人依赖的锁定文件启用版本更新,仍可以启用Dependabot预览

  1. 创建 dependabot.yml 配置文件。
  2. 使用 package-ecosystem 指定要监视的包管理器。
  3. 对于每个包管理器,可使用:
    • directory 指定清单或其他定义文件的位置。
    • schedule.interval 指定检查新版本的频率。
  4. dependabot.yml 配置文件签入仓库的 .github 目录。

示例 dependabot.yml 文件

下面的示例 dependabot.yml 文件将为两个包管理器配置版本更新:npm 和 Docker。 当此文件被检入时,GitHub Dependabot 会检查默认分支上的清单文件中是否有过时的依赖项。 如果发现过时的依赖项,将针对默认分支提出拉取请求,以更新依赖项。

## Basic dependabot.yml file with
## minimum configuration for two package managers


version: 2
updates:
  # Enable version updates for npm
  - package-ecosystem: "npm"
    # Look for `package.json` and `lock` files in the `root` directory
    directory: "/"
    # Check the npm registry for updates every day (weekdays)
    schedule:
      interval: "daily"


  # Enable version updates for Docker
  - package-ecosystem: "docker"
    # Look for a `Dockerfile` in the `root` directory
    directory: "/"
    # Check for updates once a week
    schedule:
      interval: "weekly"

在上面的示例中,如果 Docker 依赖项已过时很久,您可能会先执行 daily 安排,直到这些依赖项达到最新状态,然后降回每周安排。

在复刻上启用版本更新

如果您想在复刻上启用版本更新,还需要执行一个额外的步骤。 存在 dependabot.yml 配置文件时,不会自动启用版本更新。 这样可确保复刻所有者在从原始仓库拉取变更时不会无意中启用版本更新,包括 dependabot.yml 配置文件。

在复刻上,也需要显式启用 GitHub Dependabot。

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

  1. 在仓库名称下,单击 tableInsights(洞察)

主仓库导航栏中的洞察选项卡

  1. 在左侧边栏中,单击 Dependency graph(依赖图)

左侧边栏的依赖图选项卡

  1. 在“依赖关系图”下,点击Dependabot

Dependency graph, Dependabot tab

  1. 在“Enable Dependabot(启用 Dependabot)”下,单击 Enable Dependabot(启用 Dependabot)

检查版本更新的状态

启用版本更新后,将在仓库的依赖关系图中发现新的 Dependabot 选项卡。此选项卡显示将GitHub Dependabot配置为监视哪些软件包管理器,以及Dependabot上次检查新版本的时间。

仓库洞察选项卡,依赖关系图,Dependabot 选项卡

有关信息,请参阅"列出为版本更新配置的依赖项."

禁用 GitHub Dependabot 版本更新

您可以通过从仓库删除 dependabot.yml 文件完全禁用版本更新。 更多情况下,您会希望临时为一个或多个依赖项或包管理器禁用更新。

  • 包管理器:通过设置 open-pull-requests-limit: 0 或为配置文件中的相关 package-ecosystem 添加注释执行禁用。
  • 特定依赖项:通过为您想从更新中排除的包或应用程序添加 ignore 属性执行禁用。

禁用依赖项时,可以使用通配符匹配一组相关库。 您也可以指定要排除的版本。 如果您需要阻止库更新,利用待处理的工作支持对 API 进行重大变更,但又希望您使用的版本得到所有安全修复,此方法将特别有用。

为某些依赖项禁用版本更新的示例

下面的示例 dependabot.yml 文件包括禁用某些依赖项的更新,同时允许其他更新继续进行的不同方式的示例。

## dependabot.yml file with updates
## disabled for Docker and limited for npm


version: 2
updates:
  # Configuration for Dockerfile
  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"
      # Disable all pull requests for Docker dependencies
    open-pull-requests-limit: 0


  # Configuration for npm
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    # Overwrite any ignores created using `@dependabot ignore` commands
    ignore:
      # Ignore updates to packages that start 'aws'
      # Wildcards match zero or more arbitrary characters
      - dependency-name: "aws*"
      # Ignore some updates to the 'express' package
      - dependency-name: "express"
        # Ignore only new versions for 4.x and 5.x
        versions: ["4.x", "5.x"]

警告:将 ignore 选项添加至 dependabot.yml 配置文件之前,请检查仓库是否已有任何忽略首选项(已使用 @dependabot ignore 命令创建)。 将 ignore 选项添加至 dependabot.yml 配置文件时,此选项将覆盖为此包管理器、分支和目录集中存储的任何忽略首选项。

这会影响安全和版本更新。

有关检查现有忽略首选项的更多信息,请参阅“依赖项更新的配置选项。”