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

如何通过Python获取Jira中issue关联的拉取请求(Pull Request)状态

错误根因

你当前代码报错是因为issue.id返回的是Jira Issue的纯数字ID字符串,本身不包含pullrequest属性,属于属性调用入口错误。

解决方法

步骤1:确认PR字段存储位置

首先运行如下代码,遍历你Jira实例的所有自定义字段,找到和拉取请求/PR/合并请求相关的字段ID:

from jira import JIRA
# 替换为你的Jira鉴权逻辑
auth_jira = JIRA(server='你的Jira服务地址', basic_auth=('你的账号', '你的接口Token'))
issue = auth_jira.issue('XYZ-000')

# 输出所有字段的ID和名称,定位PR对应字段
for field in auth_jira.fields():
    print(f"字段ID: {field['id']}, 字段名称: {field['name']}")

步骤2:通过自定义字段读取PR状态

找到PR对应的字段ID(格式为customfield_xxxx)后,直接调用对应属性读取PR信息:

# 示例:假设PR对应字段ID为customfield_12345
pr_list = issue.fields.customfield_12345
if pr_list:
    for pr in pr_list:
        # 可根据实际返回的字段调整取值逻辑
        pr_status = pr.get('status')
        pr_url = pr.get('url')
        print(f"PR状态:{pr_status},PR地址:{pr_url}")

特殊场景:PR存储在开发面板未同步到自定义字段

如果你的Jira绑定了GitHub/GitLab等代码仓库,PR信息仅存在于开发面板未同步到自定义字段,可直接调用Jira内置接口拉取:

# 构造开发信息请求地址,applicationType根据实际绑定的仓库类型调整,可选值github/gitlab/bitbucket
dev_api_url = f"{auth_jira._options['server']}/rest/dev-status/latest/issue/detail?issueId={issue.id}&applicationType=github&dataType=pullrequest"
resp = auth_jira._session.get(dev_api_url)
dev_data = resp.json()

# 提取PR状态
if dev_data.get('detail'):
    for pr in dev_data['detail'][0].get('pullRequests', []):
        print(f"PR标题:{pr['name']},PR状态:{pr['status']}")

注意事项

  • 确保你的Jira账号有开发信息读取权限,否则会触发403报错
  • Python 3.7环境兼容的jira库最高版本为3.5.0,不要安装更高版本避免兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:18:02