既然 Dependabot 已合并到 GitHub,除了依赖关系图本身之外,还可以启用三个不同的功能:两个在设置的安全和分析部分,最后一个在 Insights 的依赖关系图部分给定 GitHub 存储库的选项卡:
-
Dependabot 警报:是否会生成安全警报?
-
Dependabot 安全更新:是否会通过发现易受攻击的依赖项来生成拉取请求?
-
Dependabot 版本更新:每当有新版本的依赖项可用时,是否会生成拉取请求?
(所有这些都需要启用依赖关系图——并且对于一个 repo 至少有一个 supported package ecosystem 文件)
检查是否启用了 Dependabot 警报
根据GitHub REST API Reference,您可以通过GitHub REST API 在以下端点检查是否启用了Dependabot 警报:
https://api.github.com/repos/{owner}/{repo}/vulnerability-alerts
204 响应确认该功能已启用,404 表示未启用。
检查是否启用了 Dependabot 安全更新
奇怪的是,GitHub REST API Reference 列出了对 enable 或 disable 功能的请求,但没有获取给定 repo 的功能的当前状态,我还没有能够令人满意地找到如何获取来自 REST 或 GraphQL API 的信息。
GuiFalourd 的回答提到使用 GraphQL API 检查是否存在 .github/dependabot.yml 文件。不幸的是,这与安全更新不是一对一的关系:文件可能在未启用安全更新的情况下存在,或者在启用安全更新时可能不存在。 dependabot.yml 文件用于version updates,这是相关但不是一回事。
您始终可以使用 REST API enable security updates 请求来确保该功能已启用,但这与查询其当前状态以获取 repo 完全不同。如果有人确实发现了一种无需页面抓取的方法,或者如果 GitHub 增加了将来检查的功能,请告诉我!
检查是否启用了 Dependabot 版本更新
同样,这与安全更新不同,但根据您的政策/实践,它可能是一对一的关系。对 Graph 端点 https://api.github.com/graphql
使用类似下面的内容
查询
{
repository(name: "{repo}", owner: "{owner}") {
object(expression: "HEAD:.github/") {
... on Tree {
entries {
name
}
}
}
}
}
文件存在时的响应:
{
"data": {
"repository": {
"object": {
"entries": [
{
"name": "dependabot.yml"
}
]
}
}
}
}
文件不存在时的响应:
{
"data": {
"repository": {
"object": null
}
}
}