Skip to main content

GitHub Actions 上的 Dependabot

有关使用Dependabot和GitHub Actions的详细信息。

触发事件时 Dependabot 的限制

Dependabot 能够在其拉取请求和评论上触发 GitHub Actions 工作流程;但是,某些事件的处理方式不同。

对于使用Dependabotgithub.actor == 'dependabot[bot]'pull_requestpull_request_reviewpull_request_review_comment``pushcreatedeploymentdeployment_status事件启动的工作流,这些限制适用:

  •         `GITHUB_TOKEN` 默认拥有只读权限。
    
  • 机密信息从Dependabot的秘密中提取。 GitHub Actions 机密不可用。

对于使用Dependabotgithub.actor == 'dependabot[bot]'``pull_request_target事件启动的工作流,如果拉取请求的基引用由 Dependabot (github.event.pull_request.user.login == 'dependabot[bot]') 创建,GITHUB_TOKEN则为只读,机密不可用。

即使工作流由其他执行者重新运行,这些限制也仍然适用。

有关详细信息,请参阅确保 GitHub Actions 和工作流安全:阻止 pwn 请求

使用Dependabot与自托管运行器的要求

若要使用自承载运行程序生成 Dependabot updates ,需要正确配置系统、网络和证书。

系统要求

用于 Dependabot 运行器的任何虚拟机 (VM) 都必须满足自托管运行器的要求。 此外,它们还必须满足以下要求。

  • Linux 操作系统

  • x64 体系结构

  • 安装有运行器用户访问权限的 Docker:

    • 建议在无根模式下安装 Docker,并将运行器配置为在没有 root 特权的情况下访问 Docker。
    • 或者,安装 Docker 并授予运行器用户提升的权限来运行 Docker。

CPU 和内存要求将取决于在给定 VM 上部署的并发运行器的数量。 作为指导,我们已在一台 2 CPU 8GB 的计算机上成功设置了 20 个运行器,但最终,CPU 和内存要求将在很大程度上取决于正在更新的存储库。 某些生态系统需要比其他生态系统更多的资源。

如果在 VM 上指定了 14 个以上的并发运行器,则还必须更新 Docker /etc/docker/daemon.json 配置,以增加 Docker 可以创建的默认网络数。

{
  "default-address-pools": [
    {"base":"10.10.0.0/16","size":24}
  ]
}

网络要求

Dependabot 运行器需要访问公共互联网、GitHub.com 以及将在 Dependabot updates 更新中使用的任何内部注册表。 为了最大程度地降低内部网络的风险,应该限制虚拟机 (VM) 对内部网络的访问。 如果运行器下载了一个被劫持的依赖项,这将减少内部系统损坏的可能性。

还需要允许出站流量流往 dependabot-actions.githubapp.com 以阻止Dependabot security updates 的作业失败。 有关详细信息,请参阅“自托管运行程序参考”。

证书配置

如果需要 Dependabot 与使用自签名证书的注册表进行交互,还必须在运行 Dependabot 作业的自承载运行程序上安装这些证书。 这一安全措施强化了连接。 还必须配置 Node.js 以使用证书,因为大多数操作都是用 JavaScript 编写并使用 Node.js 运行,而 Node.js 不使用操作系统证书存储。