如何通过 GitHub API 获取 Dependabot 警报列表?

大朱雀*_*大朱雀 8 github github-api dependabot

如何通过 GitHub API获取https://github.com/{user}/{repo}/security/dependabot?page=1&q=is%3Aopen上可用的依赖机器人警报列表?

在此处输入图片说明

我搜索了文档,但在那里找不到任何东西。

谢谢!

Ber*_*tel 8

Graphql API提供了这个RepositoryVulnerabilityAlert对象。

例如,对于特定的存储库,您可以通过以下查询获取所有警报(在资源管理器中查看):

{
    repository(name: "repo-name", owner: "repo-owner") {
        vulnerabilityAlerts(first: 100) {
            nodes {
                createdAt
                dismissedAt
                securityVulnerability {
                    package {
                        name
                    }
                    advisory {
                        description
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它还返回可以使用该dismissedAt字段发现的已解除警报。但似乎没有办法只过滤“活动”警报

示例输出:

{
  "data": {
    "repository": {
      "vulnerabilityAlerts": {
        "nodes": [
          {
            "createdAt": "2018-03-05T19:13:26Z",
            "dismissedAt": null,
            "securityVulnerability": {
              "package": {
                "name": "moment"
              },
              "advisory": {
                "description": "Affected versions of `moment` are vulnerable to a low severity regular expression denial of service when parsing dates as strings.\n\n\n## Recommendation\n\nUpdate to version 2.19.3 or later."
              }
            }
          },
          ....
        ]
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Erm*_*ary 6

2022 年 9 月 22 日起,根据官方文档,现在有一个 REST 端点以及 GitHub CLI 支持,用于列出 Dependabot 警报。

它允许您列出以下警报:


以下示例用于获取特定存储库的警报。

GitHub CLI(Bash):

gh api \
  -H "Accept: application/vnd.github+json" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  /repos/[owner]/[repo-name]/dependabot/alerts
Run Code Online (Sandbox Code Playgroud)

GitHub CLI(Powershell):

gh api `
  -H "Accept: application/vnd.github+json" `
  -H "X-GitHub-Api-Version: 2022-11-28" `
  /repos/[owner]/[repo-name]/dependabot/alerts
Run Code Online (Sandbox Code Playgroud)

直接调用REST API(Bash):

gh api `
  -H "Accept: application/vnd.github+json" `
  -H "X-GitHub-Api-Version: 2022-11-28" `
  /repos/[owner]/[repo-name]/dependabot/alerts
Run Code Online (Sandbox Code Playgroud)

直接调用REST API(Powershell):

$headers = @{
    "Accept"                = "application/vnd.github+json"
    "Authorization"         = "Bearer [your-token]"
    "X-GitHub-Api-Version"  = "2022-11-28"
}

Invoke-WebRequest `
    -Uri "https://api.github.com/repos/[owner]/[repo-name]/dependabot/alerts" `
    -Headers $headers
Run Code Online (Sandbox Code Playgroud)

截断的 JSON 响应示例:

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer [your-token]" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/[owner]/[repo-name]/dependabot/alerts
Run Code Online (Sandbox Code Playgroud)

请注意,这仍处于公开测试阶段。端点可能会发生变化,但应该可供所有帐户使用。