是否可以获得特定项目的冲刺列表?我知道有一种方法可以通过冲刺来查找问题,但还没有找到任何方法来获得所有冲刺。
在 JQL 中尚不可能,但您可以使用新的 jira 敏捷 API。这是 jira cloud 和 jira server 7.2.3 的文档。
首先,您需要找到您的项目的董事会。用于获取您的主板列表的 REST 端点是:
[jira-url]/rest/agile/1.0/board
接下来你可以通过以下方式获取他们的项目:
[jira-url]/rest/agile/1.0/[board-id]/project
通过这种方式你可以找到你的项目的board id。最后,您可以通过以下方式获取该板的冲刺列表:
[jira-url]/rest/agile/1.0/[board-id]/sprint
[jira-url]/rest/greenhopper/1.0/sprint/picker
提供包含活动冲刺(包括 id 和 boardName)的“allMatches”数组。
当我在所有项目中搜索活动冲刺列表以清理未完成或命名不正确的冲刺时,这对我很有用。
基于此答案:answers.atlassian.com/questions/65920/answers/3599592,获取冲刺列表的最佳 Web API 是:
https://<your_site>/rest/greenhopper/1.0/sprintquery/<rapidBoardId>?includeFutureSprints=true&includeHistoricSprints=false
<rapidBoardId>
每个系统都不一样,我只是在JIRA上浏览时在浏览器地址栏中看到它,然后我将它硬编码到调用API的代码中。
https://<your_site>/secure/RapidBoard.jspa?rapidView=<rapidBoardId is here on your browser address bar>
没有 REST 端点可以执行此操作,您只能查询特定 Rapid Board 可见的 sprint,并且需要使用 GreenHoppper 插件来执行此操作。
其端点是:https://yourjira.com/rest/greenhopper/1.0/sprints/{rapidBoardId}
您可以在另一个 REST 端点枚举快速板:https://yourjira.com/rest/greenhopper/1.0/rapidviews/list
没有直接的解决方案,只有变通办法。可笑的是为什么 Jira 不提供这样的 API 调用。
您可以使用此端点:
https://api.atlassian.com/ex/jira/{cloudId}/rest/api/2/jql/autocompletedata/suggestions?fieldName=Sprint&fieldValue=
注意查询末尾的空格字符。这意味着 sprint 的每个名称内部都包含空格字符。
输出:
{
"results": [
{
"value": "2",
"displayName": "Sprint 4 - 2020-06-17 04:00 (12)"
},
{
"value": "1",
"displayName": "Sprint 2 - 2020-06-20 06:45 (6)"
}
}
这个不是我发明的,是同事发明的。但是,您可以使用此 JQL 轻松访问“搜索问题”屏幕中的所有 sprint:Sprint 不是 EMPTY
就是这样。享受吧。
您看过冲刺报告吗?下拉列表将显示该板的所有冲刺的列表。当然,每个项目可以有多个板,因此您可能需要搜索所有相关板。
这是我的解决方案。
rest/api/2/search?jql=project%20%3D%20ABCD%20AND%20Sprint%20in%20openSprints()
获取当前活动冲刺中的问题。然后你就可以获得主动冲刺了。rest/api/2/search?jql=Sprint%20%3D%2014343
来了解问题。在代码下方解析活动冲刺。
fetch(sprintUrl, {
headers: requestHeader,
})
.then((res) => res.json())
.then((data) => {
const regex = new RegExp("state=ACTIVE");
let activeSprint = data.issues[0].fields.customfield_14400.filter(
(e: string) => regex.test(e)
)[0];
const sprintParser =
/id=(\d+).*?name=(.*?),startDate=([\d-]+).*?endDate=([\d-]+)/g;
const group = [...activeSprint.matchAll(sprintParser)][0];
setSprint(
Object.create({
id: parseInt(group[1]),
name: group[2],
startDate: group[3],
endDate: group[4],
})
);
});