Redmine Gerrit 通过 API 进行访问

bernardlai · 2017年07月12日 · 最后由 muyusen 回复于 2019年08月13日 · 112 次阅读

Gerrit 通过 API 进行访问 Gerrit 提供 API 方式进行访问,访问特定的接口返回指定的 json 数据。 默认 Gerrit 的配置不开启这个功能,需要进行配置修改。

  1. 修改配置文件 [auth] type = HTTP gitBasicAuth=true 新增 gitBasicAuth=true
  2. 设置用户的 HTTP 访问 token

在使用 Gerrit 的帮助文档中给出示例 curl --digest --user username:password http://localhost:8080/a/path/to/api/ 这里的用户名和密码为红色内容。 实际使用中这个—digest 会加密导致无法访问需要去掉。 curl --user username:password http://localhost:8080/a/path/to/api/ 就可以正常返回数据。 Ruby 有个名为 gerry 的 gem 可以访问 Gerrit 的数据,同样有这个验证的问题。

这个问题我恰巧有一阵也研究过,我得出的结论是:

  1. gerrit 默认使用的是 digest 认证, 也就是示例中需要加 authencation 类型--digest
  2. 在 gerrit 的配置中,如果使用了 auth.gitBasicAuth 则启动了 basic 认证 是不是 basic 认证不需要加 authencation 类型?这个我倒不清楚,按你的结果应该是 basic 类型就不需要额外加 authencation 类型的选项了。 然后我觉得可以补充说一点,也许对从来没用过的人来说会有用。因为 gerrit 的官方 api 提供的 url 路径中并没有/a/(这点也曾经让我一个 REST API 的初使用者苦恼了一阵),对于匿名访问的情况并不需要加/a/就能得到结果,但是大部分情况下我们都是非匿名访问,需要用户认证,所以 url 也相应需要在官网提供的 api 中 url 的前面加上/a/

PS:在 gerrit 2.14 的版本之后,已经不支持 digest 的认证访问了

需要 登录 后方可回复。