从python访问JIRA

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

我想在我的工作场所从python访问jira,我打算做的基本操作是获取/创建/更新jira问题。我在网上查看了模板代码,并尝试使用它,但没有运气。我已经使用pip安装了jira api。

pip install jira

#!/usr/bin/python
from jira import JIRA
options = {'server' : 'https://jira.mycompany.com/rest/api/2'}
jira = JIRA(options)
projects = jira.projects()
print (projects)

这是它的输出:

Traceback (most recent call last):
  File "JiraTest.py", line 7, in <module>
    jira = JIRA(options)
  File "C:\Anaconda3\lib\site-packages\jira\client.py", line 317, in __init__
    si = self.server_info()
  File "C:\Anaconda3\lib\site-packages\jira\client.py", line 1771, in server_info
    j = self._get_json('serverInfo')
  File "C:\Anaconda3\lib\site-packages\jira\client.py", line 2172, in _get_json
    r = self._session.get(url, params=params)
  File "C:\Anaconda3\lib\site-packages\jira\resilientsession.py", line 150, in get
   return self.__verb('GET', url, **kwargs)
  File "C:\Anaconda3\lib\site-packages\jira\resilientsession.py", line 146, in __verb
    raise_on_error(response, verb=verb, **kwargs)
  File "C:\Anaconda3\lib\site-packages\jira\resilientsession.py", line 56, in raise_on_error
    r.status_code, error, r.url, request=request, response=r, **kwargs)
jira.exceptions.JIRAError: JiraError HTTP 404 url:https://jira.mycompany.com/rest/api/2/rest/api/2/serverInfo

        response headers = {'Date': 'Sat, 29 Jul 2017 22:42:31 GMT', 'Content-Length': '0', 'Server': 'Apache-Coyote/1.1'}
        response text = 

“我知道我在这里做错了,所以这就是我想问的问题:

  • 如何在工作场所确定jira服务器。
  • jira管理员是否需要通过管理员登录启用rest api调用或其他功能?有没有办法确定它是否从我们的代码中禁用?
  • 除了通过pip安装jira之外,还有什么我需要安装的。
  • 如何处理登录凭据。我确信有一种比在.py文件中指定用户名/密码更好的方法。有人能指出我在哪里可以找到这些信息。

谢谢。

python jira jira-rest-api python-jira
2个回答
0
投票

我不确定你使用的是什么版本的jira-python客户端但是为了实例化一个JIRA对象,你没有在“options”参数中传递服务器(你绝对不会把路径放到REST中) API)。根据文件:

class jira.JIRA(server=None, options=None, basic_auth=None, oauth=None, jwt=None, kerberos=False, validate=False, get_server_info=True, async=False, logging=True, max_retries=3, proxies=None, timeout=None)

所以你的实例化应该如下所示:

from jira.client import JIRA

jira = JIRA('https://jira.mycompany.com')

如果您需要验证,那么它将是:

jira = JIRA('https://jira.mycompany.com', basic_auth=(username, password))

0
投票

要确认您拥有正确的JIRA服务器,请浏览到根URL https://jira.mycompany.com并确保您可以看到登录屏幕并登录(这也确认您的用户名和密码也可用)。

必须先启用对JIRA REST API的访问,然后才能使用它。要测试它,尝试使用curl与它进行通信,例如:

curl -u "username:password" -X GET -H "Content-Type: application/json" https://jira.mycompany.com/rest/api/2/issue/KEY-666

只要Python可以使用GET和POST与服务器通信,您就不需要其他任何东西。

对于用户名和密码,我只需要在命令行中询问脚本,并提供不显示密码的说明。我使用node.js,但我确信Python有类似的东西。或者将它们保存在脚本读入的单独文件中,但请确保您永远不会检查该文件!

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