所以...我当前的项目包括制作一个脚本,它将以编程方式在我们的 Stash 服务器(又名 BitBucket 服务器)上配置存储库。这包括为每个存储库设置默认审阅者。有 REST API 吗?
对于默认审阅者功能,没有记录的 REST API,至少对于我们正在使用的 Stash 版本 (4.8.x) 以及可能是当前版本来说是这样。我所说的“没有记录的 API”不仅指官方 REST API 文档,还指网络上的任何地方。幸运的是,该插件使用了一个秘密 API。
长话短说,这是您需要拨打的电话。它们是简单的 url 上的 GET、POST 和 DELETE。为了简洁起见,我将使用curl作为示例:
在以下链接上执行 GET:
curl -X GET -u (username):(password) (base_url)/rest/default-reviewers/latest/projects/(project_name)/repos/(repo_name)/conditions
结果将是一个 JSON 列表。列表中的每个项目都包含列表中条目的 ID(与用户 ID 不同),后跟有关默认审阅者规则的信息。
对以下内容进行 POST,并显示标题和数据:
curl -X POST -H 'Content-Type: application/json' -u (username):(password) (base_url)/rest/default-reviewers/latest/projects/(project_name)/repos/(repo_name)/condition --data-binary '{"sourceMatcher":{"id":"any","type":{"id":"ANY_REF"}},"targetMatcher":{"id":"refs/heads/master","type":{"id":"BRANCH"}},"reviewers":[{"id":XXXX}],"requiredApprovals":"0"}'
其中 XXXX 是用户 ID(用户名、电子邮件或全名不起作用)。您可以使用标准 REST API 获取用户的 ID。又名执行 GET:(base_url)/rest/api/1.0/users?filter=(用户名、电子邮件或全名)
对以下内容进行删除
curl -X DELETE -u (username):(password) (base_url)/rest/default-reviewers/latest/projects/(project_name)/repos/(repo_name)/condition/YYY
其中 YYY 是默认审阅者列表中的条目 ID(不是用户 ID)。如果您知道要删除的用户的用户 ID、电子邮件、用户名或全名,您可以获取所有默认评论者(见上文),找到您想要的用户,然后您可以获取该用户的条目 ID列出项目。
还有一件事:您可以使用 Chrome Inspector(“网络”选项卡)使用 POST 和 DELETE 命令来观察默认审阅者插件,但插件(面向用户的部分)不直接使用 GET 命令,并且无法用 Chrome 观察到(我发表这篇文章的原因是因为这个 GET 命令可能很难弄清楚 - 它对我来说)
我知道这是一个老问题,但只是想指出,从 Bitbucket Server 5.1 开始,默认审阅者 REST API 已公开:https://confluence.atlassian.com/bitbucketserverkb/how-to-retrieve-default -reviewers-via-rest-api-in-bitbucket-server-1047535034.html
最新版本,页面底部的curl示例https://confluence.atlassian.com/bitbucketserverkb/how-to-retrieve-default-reviewers-via-rest-api-in-bitbucket-server-1047535034.html
添加到 user1942541 的综合答案中,我可以确认这是目前唯一的方法。我们计划在某个时候为默认审阅者提供适当的、记录在案的 API。请观看 https://jira.atlassian.com/browse/BSERV-8988 了解更新。