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

时间:2018-09-14 09:03:37

标签: github

背景

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

注意:我们编写了一个自定义链接检查器,因为我们拥有的一组关键链接中的一个用于我们的监控解决方案,而遗憾的是(也可以理解)我们使用的SaaS返回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>
  • 文件网址: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承载身份验证,例如 curl -I -H "Authorization: bearer 2....token.redacted....b" https://github.com/stephenc/<repo-name> HTTP/1.1 404 Not Found

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我从GitHub支持获得了一个答案:No

  

由于个人访问令牌不适用于GitHub Web UI URL,因此不能在没有调用API的情况下验证所有可能的GitHub私有仓库URL。