使用Python自动创建JIRA票据

问题描述 投票:0回答:1

我一直在尝试编写一个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 来捕获错误,但无济于事。

我怎样才能找出哪里出了问题以及为什么我的问题没有被创建?

如果我需要提供更多信息,请告诉我,提前谢谢您。

python exception jira jira-rest-api python-jira
1个回答
0
投票

我想在这里提供一个答案,对此我想将大部分功劳归功于@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)

我希望这可以帮助任何可能遇到类似问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.