如何使用 Github API 检查是否为 Repo 启用了 Dependabot?

Kar*_*kku 5 automation github github-api github-graphql github-actions

我已经浏览了 Github Rest API v3 和 Github GraphQL API v4,但我无法找到资源/端点来检查 dependentabot 是否通过 API 启用?我已经阅读了大量文档,但找不到任何有用的内容。有人可以指出我正确的文档或告诉我要使用哪个资源吗?谢谢!

epo*_*ces 9

现在 Dependabot 已合并到 GitHub 中,除了依赖关系图本身之外,还可以启用三个不同的功能:其中两个位于设置的“安全性和分析”部分,最后一个位于“洞察”选项卡的“依赖关系图”部分。给定 GitHub 存储库:

  • Dependabot 警报:会生成安全警报吗?
  • Dependabot 安全更新:发现易受攻击的依赖项是否会生成拉取请求?
  • Dependabot 版本更新:每当有新版本的依赖项可用时,是否会生成拉取请求?

(所有这些都需要启用依赖关系图——并且存储库必须至少有一个受支持的包生态系统文件)

检查 Dependabot 警报是否已启用

根据GitHub REST API Reference,您可以通过以下端点的 GitHub REST API 检查 Dependabot 警报是否已启用: https://api.github.com/repos/{owner}/{repo}/vulnerability-alerts

204 响应确认该功能已启用,404 表示未启用。

检查 Dependabot 安全更新是否已启用

奇怪的是,GitHub REST API 参考列出了启用或禁用该功能的请求,但没有列出给定存储库的该功能的当前状态,而且我无法令人满意地找到如何从 REST 或 GraphQL 获取该信息API。

GuiFalourd 的回答提到使用 GraphQL API 来检查文件是否存在.github/dependabot.yml。不幸的是,这与安全更新不是一对一的关系:该文件可能在未启用安全更新的情况下存在,或者在启用安全更新时可能不存在。该dependabot.yml文件用于版本更新,有相关但不是同一件事。

您始终可以使用 REST API启用安全更新请求来确保该功能已启用,但这与查询存储库的当前状态完全不同。如果有人确实发现了一种无需页面抓取即可完成此操作的方法,或者 GitHub 是否添加了将来检查的功能,请告诉我!

检查 Dependabot 版本更新是否已启用

同样,这与安全更新不同,但根据您的策略/实践,它可能是一对一的关系。对图形端点使用类似以下内容https://api.github.com/graphql

询问

{
    repository(name: "{repo}", owner: "{owner}") {
        object(expression: "HEAD:.github/") {
            ... on Tree {
                entries {
                    name
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果文件存在则响应:

{
    "data": {
        "repository": {
            "object": {
                "entries": [
                    {
                        "name": "dependabot.yml"
                    }
                ]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果文件不存在则响应:

{
    "data": {
        "repository": {
            "object": null
        }
    }
}
Run Code Online (Sandbox Code Playgroud)