如何获取指定项目下带特定标签的所有Jira问题?
Jira API 常见问题解决方案
1. 获取项目全部问题(突破50条限制)
get_project_issuekey_all默认分页返回,每页最多50条。要拿到全部结果,需通过分页参数循环请求,直到没有新数据返回:
all_issue_keys = [] start_at = 0 while True: batch_issues = jira.get_project_issuekey_all("project_name", startAt=start_at) if not batch_issues: break all_issue_keys.extend(batch_issues) start_at += len(batch_issues)
每次请求用startAt指定起始位置,累加已获取的问题数量作为下一次的起始点,直到返回的结果为空,就说明已经拿到所有数据。
2. 检查Jira问题是否包含特定标签
用jira.issue_field_value拿到标签列表后,直接用Python的in运算符判断目标标签是否存在:
issue_labels = jira.issue_field_value('ISSUE-123', 'labels') target_label = "bug" if target_label in issue_labels: print("该问题包含目标标签") else: print("该问题不包含目标标签")
注意标签大小写敏感,要和Jira系统里的标签完全匹配。
3. 获取指定项目下带特定标签的所有问题
最高效的方式是直接用JQL查询,一次性过滤出符合条件的问题,避免先拉取所有问题再筛选:
jql_query = 'project = "project_name" AND labels = "target_label"' matching_issues = jira.search_issues(jql_query, maxResults=False) # 提取所有符合条件的issue key issue_keys = [issue.key for issue in matching_issues]
maxResults=False会自动处理分页,返回所有符合条件的结果。如果一定要结合前两个方法,也可以先拿到全部项目issue key,再逐个检查标签(适合数据量小的场景):
matching_issue_keys = [] start_at = 0 target_label = "bug" while True: batch_issues = jira.get_project_issuekey_all("project_name", startAt=start_at) if not batch_issues: break for issue_key in batch_issues: labels = jira.issue_field_value(issue_key, 'labels') if target_label in labels: matching_issue_keys.append(issue_key) start_at += len(batch_issues)
内容的提问来源于stack exchange,提问作者dluisely
相关产品推荐
相关产品推荐

