如何通过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
相关产品推荐
相关产品推荐

