如何通过Python获取JIRA特定项目工作流的所有状态?
如何用Python筛选JIRA特定项目工作流的状态
嘿,刚好我之前做过类似的JIRA报表工具,完全懂你现在的痛点——jiraInstance.statuses()返回的是全局所有状态,根本没法直接用在特定项目的报表里。给你分享两种靠谱的实现方法,按需选就行:
方法一:通过项目的工作流方案获取完整状态列表
这种方法能拿到该项目工作流里定义的所有状态(包括可能还没被任何缺陷使用过的状态),适合需要完整工作流视图的场景:
from jira import JIRA # 初始化JIRA实例(根据你的配置调整) jira = JIRA(server="你的JIRA站点URL", basic_auth=("用户名", "密码/API令牌")) # 指定目标项目的key或名称 target_project_key = "PROJ123" # 1. 获取项目详情,提取工作流方案ID project = jira.project(target_project_key) workflow_scheme_id = project.raw["workflowScheme"]["id"] # 适配多数JIRA版本的字段路径 # 2. 获取工作流方案的详细信息,包含关联的工作流 workflow_scheme = jira.workflow_scheme(workflow_scheme_id) # 3. 遍历工作流,收集所有状态 project_statuses = set() for workflow_entry in workflow_scheme["workflows"]: workflow = jira.workflow(workflow_entry["workflowName"]) for status in workflow["statuses"]: project_statuses.add((status["id"], status["name"])) # 存储状态ID和名称 # 输出结果 print(f"项目{target_project_key}的工作流状态:") for status_id, status_name in project_statuses: print(f"- {status_name} (ID: {status_id})")
方法二:从项目缺陷中提取实际使用的状态(更适合报表场景)
如果你的报表只需要该项目中实际存在的缺陷状态(毕竟报表要展示的是真实数据),这种方法更直接,而且不需要处理复杂的工作流方案逻辑:
from jira import JIRA # 初始化JIRA实例 jira = JIRA(server="你的JIRA站点URL", basic_auth=("用户名", "密码/API令牌")) target_project_key = "PROJ123" # JQL查询:获取该项目下所有缺陷(可根据需求调整JQL,比如只查特定类型/时间段) jql_query = f'project = {target_project_key} AND issuetype = Bug' # 获取所有匹配的缺陷(maxResults=False获取全部结果) issues = jira.search_issues(jql_query, maxResults=False) # 提取状态并去重 used_statuses = set() for issue in issues: used_statuses.add((issue.status.id, issue.status.name)) # 输出结果 print(f"项目{target_project_key}中缺陷实际使用的状态:") for status_id, status_name in used_statuses: print(f"- {status_name} (ID: {status_id})")
小提示
- 如果你用的是JIRA Cloud,记得用API令牌代替密码,别直接用账号密码哦。
- 方法二的JQL可以根据报表需求优化,比如加上时间范围(
created >= "2024-01-01"),只统计特定时间段的缺陷状态。 - 两种方法的结果都可以整理成字典或者DataFrame,方便后续用
pandas生成报表表格。
内容的提问来源于stack exchange,提问作者Vin
相关产品推荐
相关产品推荐

