Dependabot build 教程


Dependabot Build教程

Dependabot 是 GitHub 提供的一个自动化依赖项管理工具,主要作用是帮助你:

  1. 安全更新(Dependabot security updates):
    • 监控漏洞: 持续扫描你的代码库中使用的所有依赖项(包括库、包、GitHub Actions、Docker 镜像等)是否存在已知的安全漏洞
    • 发送警报: 一旦发现有漏洞的依赖项,它会立即生成 Dependabot 警报 (Dependabot alerts) 通知你。
    • 自动修复: 如果你启用了安全更新功能,Dependabot 会自动为你创建一个 拉取请求 (Pull Request, PR),将有漏洞的依赖项更新到能修复该漏洞的最低安全版本
  2. 版本更新(Dependabot version updates):
    • 保持最新: 即使依赖项没有安全漏洞,Dependabot 也可以根据你的配置,定期检查并为你使用的所有依赖项创建 PR,将它们更新到最新版本
    • 防止技术债务: 帮助你保持项目依赖项的及时更新,防止因版本落后而积累技术债务。

开启dependabot并配置

github仓库页面配置

设置中开启dependabot相关的设置就行了,主要是找到 Dependabot alertsDependabot security updates,并确保它们被**启用 (Enable)**。

本地配置dependabot版本更新

直接vim .github/dependabot.yml创建配置文件,在这个文件中定义需要监控的包生态系统,文件夹路径和检查的频率。

例如我使用的npm,同时我选择了自动更新小版本并自动合并:

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # 自动合并配置
    allow:
      - dependency-type: "production" # 只允许生产依赖
    # 自动合并小版本更新
    versioning-strategy: "auto"
    # 分组相似更新
    groups:
      minor-patches:
        patterns:
          - "*"
        update-types:
          - "minor"
          - "patch"
  # 更新 GitHub Actions
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"

  # 如果你有其他包管理器,可以继续配置
  # - package-ecosystem: "pip"
  #   directory: "/"
  #   schedule:
  #     interval: "weekly"

之后,需要进行的操作就是commit一次。

  • dependabot.yml 文件提交到你的仓库。
  • Dependabot 会根据配置开始运行,并为你指定的依赖项创建更新版本的 PR。

Dependabot 的其他重要功能

1. 分组更新 (Grouped Updates)

对于大型项目,一次性更新数百个依赖项会产生大量的 PR,使代码审查变得困难。

  • 作用: 允许你将特定依赖项(例如所有开发依赖或所有次要版本更新)组合到一个单独的 PR 中
  • 好处: 减少了 PR 的数量,简化了合并流程,让你可以作为一个整体来测试和部署相关更新。
  • 配置方式:dependabot.yml 文件中使用 groups 关键字进行配置。

示例: 将所有 npm 的次要版本更新合并到一个 PR 中。

# dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      minor-updates:
        update-types: # 匹配主要更新、次要更新或补丁更新
          - "minor"
          - "patch"

2. 自动合并 (Auto-merging)

对于你信任的、风险较低的更新(如简单的补丁版本更新),你可以让 Dependabot 自动合并 PR。

  • 作用: 如果 PR 通过了你所有的 CI/CD 检查(例如单元测试、集成测试),Dependabot 可以自动将其合并到主分支,无需人工干预。
  • 好处: 大幅减少了维护开销,加速了补丁级别的更新。
  • 启用方式: 这需要在 GitHub 仓库设置中启用 Auto-merge,并在 Dependabot 创建的 PR 上标记 Auto-merge

3. 配置拉取请求的标签和分配者 (Labels and Assignees)

为了更好地整合到你的工作流中,你可以自定义 Dependabot 创建的 PR 的属性。

  • 作用: 自动为 PR 添加标签(如 dependenciesdependabot)或指定审查人员/负责人。
  • 好处: 帮助团队成员根据标签快速筛选和识别 Dependabot PR,并确保它们被正确的人员审查。
  • 配置方式:dependabot.yml 文件中使用 labelsassignees 关键字。

示例: 为所有 Docker 更新 PR 添加特定标签和分配负责人。

# dependabot.yml
# ...
  - package-ecosystem: "docker"
    directory: "/docker"
    schedule:
      interval: "monthly"
    labels:
      - "docker"
      - "dependencies"
    assignees:
      - "your-github-username"

4. 忽略更新 (Ignoring Updates)

有时可能不想更新到依赖项的最新版本,或者想跳过特定的版本范围。

  • 作用: 允许你指定某些包不应该被更新,或应该忽略特定的版本号。
  • 好处: 避免了与你的代码不兼容或需要重大重构才能升级的依赖项,让你的工作流更可控。
  • 配置方式:dependabot.yml 文件中使用 ignore 关键字。

5. 私有仓库和注册表支持 (Private Repositories and Registries)

Dependabot 可以处理存储在私有源中的依赖项,而不仅仅是公共源。

  • 作用: 如果你的项目依赖于内部或私有的包(例如私有的 npm 注册表、Maven 仓库或私有 GitHub 仓库),Dependabot 可以使用你提供的密钥或凭证来访问和检查这些依赖项。
  • 配置方式:dependabot.yml 文件中使用 registries 关键字,并结合 GitHub Secrets 来安全地存储凭证。

下一篇记录一下github action的使用。


文章作者: homie
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 homie !
  目录