我如何检查是否使用Github api启用了Dependabot的回购?



我已经通过Github Rest API v3和Github GraphQL API v4,但我无法找到一个资源/端点来检查是否通过API启用了dependabot ?我翻阅了大量的文档,但没有找到任何有用的东西。有人能告诉我正确的文档或告诉我使用哪个资源吗?谢谢!

现在Dependabot已经合并到GitHub中,除了依赖关系图本身,还有三个不同的功能可以启用:两个在Security &设置的analysis部分,以及给定GitHub repo的Insights选项卡的Dependency graph部分的最后一个:

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

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

检查是否启用了Dependabot警报

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

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

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

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

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

你总是可以使用REST API启用安全更新请求来确保该特性是开启的,但这与查询其当前状态的repo是完全不同的。如果有人发现没有页面抓取的方法,或者如果GitHub增加了将来检查的能力,请让我知道!

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

同样,这与安全更新不同,但根据您的策略/实践,它可能是1对1的关系。对图形端点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
}
}
}

有一个可依赖的API文档可以提供帮助,但它在2021年8月3日被弃用。

然而,一个解决方法是检查dependabot.yml文件是否存在于您的存储库中,或者是否使用GET请求api.github.com/repos/name/repo/contents/fileNameOrPath

关于dependbot .yml的参考文件

@epopisces的回答是一点,我也在寻找同样的东西。现在除了他所说的。检查Dependabot安全更新的状态可以通过GET请求(GET/repos/{owner}/{repo})到特定的repo,该repo可以在响应中有安全和分析标签(仅当我们有高级安全许可证时)。没有其他方法可以通过API了解状态。

https://docs.github.com/en/rest/reference/repos get-a-repository

从2023-01-10开始,Repository对象类型现在在GraphQL API中公开hasVulnerabilityAlertsEnabled字段。例如,下面的查询:

{
repository(name: "platform-samples", owner: "github") {
id
hasVulnerabilityAlertsEnabled
}
}

给出如下结果:

{
"data": {
"repository": {
"id": "MDEwOlJlcG9zaXRvcnk4NDQ1ODc3",
"hasVulnerabilityAlertsEnabled": true
}
}
}

遗憾的是,这仍然不会告诉你是否启用了安全更新,但你至少可以知道是否打开了警报。

最新更新