# GitHub Actions 上的 Dependabot

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

## 触发事件时 Dependabot 的限制

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

对于使用Dependabot`github.actor == 'dependabot[bot]'`、`pull_request`、`pull_request_review`、`pull_request_review_comment``push`、`create`、`deployment`和`deployment_status`事件启动的工作流，这些限制适用：

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

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

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

有关详细信息，请参阅[确保 GitHub Actions 和工作流安全：阻止 pwn 请求](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)。

## 使用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 可以创建的默认网络数。

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

### 网络要求

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

还需要允许出站流量流往 `dependabot-actions.githubapp.com` 以阻止Dependabot security updates 的作业失败。 有关详细信息，请参阅“[自托管运行程序参考](/zh/actions/hosting-your-own-runners/managing-self-hosted-runners/communicating-with-self-hosted-runners)”。

### 证书配置

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