You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python API获取JIRA issue的状态变更历史记录

获取JIRA Issue状态变更记录的专用API说明

你之前调用的JIRA.transitions()接口的作用是查询当前Issue可执行的状态流转选项,并非查询历史变更数据,因此无法返回你需要的状态变更记录。

可用的两类调用方案

方案1:拉取Issue全量信息时附带变更日志

调用JIRA.issue()接口时传入expand="changelog"参数,返回结果的changelog.histories字段会包含该Issue的所有历史变更记录,筛选字段为status的变更项即可得到状态变更记录。
示例代码:

from jira import JIRA

# 初始化JIRA连接
jira = JIRA(server="你的JIRA服务地址", basic_auth=("账号", "密码"))
issue = jira.issue("你的Issue编号", expand="changelog")

# 筛选状态变更记录
for history in issue.changelog.histories:
    for item in history.items:
        if item.field == "status":
            print(f"变更时间:{history.created}")
            print(f"操作人:{history.author.displayName}")
            print(f"状态从【{item.fromString}】变更为【{item.toString}】")
            print("------------------------")

方案2:直接调用变更日志专属接口(性能更优)

如果不需要拉取Issue的其他基础信息,可以直接调用JIRA.get_issue_changelog()接口只获取变更日志数据,减少数据传输开销。
示例代码:

# 直接获取变更日志
changelog = jira.get_issue_changelog("你的Issue编号")

# 筛选状态变更记录逻辑和方案1一致
for history in changelog.histories:
    for item in history.items:
        if item.field == "status":
            # 自定义处理逻辑
            pass

注意事项

  • 若Issue的历史变更条目超过50条(JIRA默认单页返回最大条数),需要通过传入startAt参数进行分页查询,拉取全量数据。
  • 调用接口的账号需要拥有对应Issue的「查看变更历史」权限,否则会出现变更日志字段缺失的情况。

内容的提问来源于stack exchange,提问作者Rajesh Kazhankodath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 16:24:03