我一直在尝试编写一个Python脚本来自动筹集Jira门票,但遇到了一些麻烦。更具体地说,我尝试使用 atlassian-python API 参考中概述的 issues_create 和 create_issue 方法。在下面提供的代码中,我成功获取了正确的项目 ID,只是为了验证我的身份验证 (PAT) 是否有效。但是第二部分失败并且未创建 Jira 票证(任务)。
供参考,这是我的代码:
from atlassian import Jira
jira = Jira(
url = "https://jira.example.com/",
token = "MyPersonalAccessToken"
)
proj = jira.get_project('key', expand=None)
print(proj.get("id")) # to verify that authentication worked
jira = Jira(
url = "https://jira.example.com/rest/api/2/issue",
token = "MyPersonalAccessToken"
)
jira.issue_create(
fields={
'project': {
'key': 'key'
},
'summary': 'Testing JIRA python API',
'description': 'testing',
'issuetype': {
"name": "Task"
},
}
)
下面是运行上面的代码时得到的输出:
<PROJECT ID>
Creating issue "Testing JIRA python API"
Traceback (most recent call last):
File "/Users/<user>/jira_python/jira.py", line 21, in <module>
jira.issue_create(
File "/Users/<user>/.local/share/virtualenvs/new_project-RFzzfWjC/lib/python3.10/site-packages/atlassian/jira.py", line 1435, in issue_create
return self.post(url, data={"fields": fields})
File "/Users/<user>/.local/share/virtualenvs/new_project-RFzzfWjC/lib/python3.10/site-packages/atlassian/rest_client.py", line 333, in post
response = self.request(
File "/Users/<user>/.local/share/virtualenvs/new_project-RFzzfWjC/lib/python3.10/site-packages/atlassian/rest_client.py", line 257, in request
self.raise_for_status(response)
File "/Users/<user>/.local/share/virtualenvs/new_project-RFzzfWjC/lib/python3.10/site-packages/atlassian/rest_client.py", line 490, in raise_for_status
raise HTTPError(error_msg, response=response)
requests.exceptions.HTTPError
我还应该注意,我尝试过仅使用基本 URL (jira.example.com),但我也收到了相同的错误。请注意,在上面的代码中,由于显而易见的原因,url 和 token 已被修改。我尝试过使用 try- except 来捕获错误,但无济于事。
我怎样才能找出哪里出了问题以及为什么我的问题没有被创建?
如果我需要提供更多信息,请告诉我,提前谢谢您。
我想在这里提供一个答案,对此我想将大部分功劳归功于@matszwecja,他暗示了如何正确地提出异常,以便我可以找出发生了什么。
添加异常处理程序后,我能够捕获阻止我的脚本按预期工作的两个问题:
issue_create 调用中的 url 参数应该是“https://jira.example.com”而不是“https://jira.example.com/rest/api/2/issue”,issue_create 函数添加了正确的端点自动。
我缺少一个强制自定义字段,该字段特定于我的 Jira 项目设置。使用异常处理程序帮助我发现了这一点。请参阅下面有效的代码:
from atlassian import Jira
from requests import HTTPError
jira = Jira(
url = "https://jira.example.com/",
token = "MyPersonalAccessToken"
)
try:
jira.issue_create(
fields={
'project': {
'key': 'key'
},
'summary': 'Testing JIRA python API',
'description': 'testing',
'issuetype': {
"name": "Task"
},
}
)
except HTTPError as e:
print(e.response.text)
我希望这可以帮助任何可能遇到类似问题的人。