如何验证私有 GitHub 存储库中的链接

9

背景

我们正在为我们的支持团队编写一些文档。 我们想在文档中包含链接到存储在私有GitHub存储库中的文件。 如果有人重构私有GitHub存储库中的代码,我们不希望文档变得过时,因此我正在设置一个CI作业,使用jsoup(如果您感兴趣)解析文档并查找所有链接。 一旦我们获得了所有链接,我们开始检查它们。

注意:我们编写了一个自定义链接检查器,因为我们拥有的关键链接之一是用于我们的监控解决方案的,很遗憾(也可以理解)我们正在使用的SaaS对警报的URL进行任何未经身份验证的请求都会返回404。 SaaS本身使用2FA访问Web UI,因此我们最终做的是解析URL,然后构造等效调用SaaS API来验证链接。 对于我们使用的监控系统,这很容易:所有URL都具有相同的格式。

问题

我们能够使用个人访问令牌验证随机的GitHub URL是否有效(理想情况下仅使用curl - 我可以从那里转换为我的选择HTTP客户端,并且curl会给出更通用的答案)吗?如果可以,该如何操作?

这些URL可能是:

  • 直接到存储库URL:https://github.com/<org>/<repo>
  • 直接到分支URL:https://github.com/<org>/<repo>/tree/<branch>
  • 文件URL:https://github.com/<org>/<repo>/blob/<path/to/file>
  • 差异URL:https://github.com/<org>/<repo>/compare/[<branch>...]<branch>
  • 基于存储库存在且在子路径中不变的其他URL,例如https://github.com/<org>/<repo>/pullshttps://github.com/<org>/<repo>/settings/collaboration
  • 以及谁知道人们将在文档中添加什么其他URL...

我尝试过但没有成功的方法

使用个人访问令牌作为密码进行HTTP基本身份验证,例如: curl -I -u stephenc:2....token.redacted....b https://github.com/stephenc/<repo-name> HTTP/1.1 404 Not Found

HTTP Bearer 身份验证,例如: curl -I -H "Authorization: bearer 2....token.redacted....b" https://github.com/stephenc/<repo-name> HTTP/1.1 404 Not Found

2个回答

0

我从GitHub支持团队得到了一个答复:

由于个人访问令牌无法用于GitHub Web UI URL,因此,在某些情况下,没有一种方法可以验证所有可能的GitHub私有存储库URL而不进行API调用。


0

看起来它适用于某些 URL(不知道是哪些)。我可以使用 API 令牌作为我的用户名访问 curl -u agentgonzo:$TOKEN https://raw.githubusercontent.com/agentgonzo/repo/path/to/file,但是在 https://github.com 的 URL 上却不起作用。不确定这是否对您有帮助。


仍需解析各种GitHub URL方案...不过这可能比通过GraphQL API进行测试更简单(因为我猜测一个简单的HEAD请求就可以工作)。 - Stephen Connolly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接