快速查找 Jira 问题的所有 Bitbucket Pull 请求

问题描述 投票:0回答:4

我想找到 Jira 问题的所有拉取请求。显然,这是一个可能的任务,正如 Jira 本身显示的信息:

Screenshot Jira/Bitbucket integration

目前,我通过 Bitbucket API 检索所有合并和打开的拉取请求的列表,并将这些请求与我的问题编号进行模式匹配。这非常耗时,甚至更耗时,因为我必须批量加载 100 个拉取请求(Bitbucket 中的最大限制),而且我们的代码分布在多个存储库中。

有一个对 bitbucket 的集成 api 调用:/rest/jira/1.0/issues//commits,它将显示对此问题的所有提交,但是 .../pullrequests 不可用。

有谁知道,Jira 如何检索这些信息?

git bitbucket jira jira-rest-api bitbucket-api
4个回答
10
投票

https://github.com/jira-node/node-jira-client/issues/142

JIRA 有一个未记录的“开发状态”API,当 JIRA 与 Stash(Bitbucket 服务器)等其他工具集成时,该 API 很常见

首先你必须获得jiraIssueNumericId。 例如,您可以通过有据可查的 Jira API 获取问题信息来获取它。您要查找的字段是“id”。 https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/?_ga=2.203378385.1940451621.1522669776-298439511.1476796418#api/2/issue-getIssue)

关于此Jira dev-status API的方法:

  1. 获取有关与问题相关的分支和拉取请求的信息:
    https://{jiraHost}/rest/dev-status/latest/issue/detail?issueId={jiraIssueNumericId}&applicationType=stash&dataType=pullrequest
  2. 获取与问题相关的提交信息:
    https://{jiraHost}/rest/dev-status/latest/issue/detail?issueId={jiraIssueNumericId}&applicationType=stash&dataType=repository
  3. 获取摘要:
    https://{jiraHost}/rest/dev-status/latest/issue/summary?issueId={jiraIssueNumericId}

附注这个API实际上是在Jira的问题页面上使用的。尝试单击拉取请求链接以打开包含请求列表的弹出窗口。在浏览器的开发面板中的“网络”选项卡中,您将找到 XHR 调用或这些 url。

P.P.S。是的,我也很难找到这些信息,但我不知道为什么它没有记录。


0
投票

看起来这个端点曾经记录在API中https://developer.atlassian.com/static/rest/stash/2.6.0/stash-jira-integration-rest.html#idp21856

但我很确定它是一个内部 API,所以你不应该依赖它的稳定性。当前文档没有列出它https://developer.atlassian.com/static/rest/bitbucket-server/4.13.0/bitbucket-rest.html


0
投票

正确的API:

https://{jiraHost}/rest/dev-status/latest/issue/details?issueId={jiraIssueNumericId}&applicationType=<scm>&dataType=<option>

其中

<scm>
可以是 bitbucket、stash 或 github
并且
dataType
可以是分支或拉取请求


0
投票

查找 JIRA 问题的所有 Pull 请求

我的答案也使用相同的

dev-status
API,但让我提供其工作的完整步骤。我将为 API 提供 cURL,以便您可以将其翻译成任何首选语言。

遗憾的是,如果没有您的实际 JIRA 密码,我找不到任何其他方法来使用此 API,JIRA 令牌对我不起作用。如果您可以在没有实际密码的情况下使其正常工作,也请告诉我。

我假设您已经拥有了票证 ID,并且它是与每个文本 ID 相对应的数字 ID(例如。

STACK-100
可能有一个类似于
301736
的 ID)

第 1 步:登录 JIRA 获取 JSESSIONID

这是我们首先需要通过实际用户名和密码登录 JIRA 的地方,从中我们从 cookie 中提取此会话 ID:

curl --location 'https://YOUR_JIRA_URL/login.jsp' \
--data-urlencode 'os_username=YOUR_USERNAME' \
--data-urlencode 'os_password=YOUR_PASSWORD' \
--data-urlencode 'os_destination=' \
--data-urlencode 'user_role=' \
--data-urlencode 'atl_token=' \
--data-urlencode 'login=Log In'

不要忘记用正确的值替换:

YOUR_JIRA_URL
YOUR_USERNAME
YOUR_PASSWORD

成功的请求将产生 HTML 响应。忽略它并查看响应的 cookie。在那里您将找到 JSESSIONID 及其值。我们用它来提出下一个请求:

第 2 步:通过 JSESSIONID 获取 Pull 请求:

执行这个cURL:

curl --location 'https://YOUR_JIRA_URL/rest/dev-status/latest/issue/detail?issueId=ISSUE_ID&applicationType=stash&dataType=pullrequest' \
--header 'Cookie: JSESSIONID=EXTRACTED_JSESSIONID;'

这将为您提供所需的响应。不要忘记替换:

YOUR_JIRA_URL
ISSUE_ID
EXTRACTED_JSESSIONID
具有正确的值。

© www.soinside.com 2019 - 2024. All rights reserved.