我是Python的新手,是jira-python库的新手,也是网络编程的新手,虽然我在应用程序和集成编程以及数据库查询方面有相当多的经验(尽管已经有一段时间了)。 / p>
使用Python 2.7并请求1.0.3
我正在尝试使用此库 - http://jira-python.readthedocs.org/en/latest/来使用Python查询Jira 5.1。我使用未经身份验证的查询成功连接,但我必须更改client.py
中的一行,更改
我改变了
self._session = requests.session(verify=verify, hooks={'args': self._add_content_type})
到
self._session = requests.session()
我不知道我在做什么,但在更改之前我收到了一个错误,在更改之后我得到了一个成功的项目名称列表。
然后我尝试了基本身份验证,以便我可以利用我的Jira权限并进行报告。最初也失败了。
我做了同样的改变def _create_http_basic_session
client.py
中的,但现在我又得到了另一个错误。所以问题没有解决。现在我得到了一个不同的错误:
HTTP Status 415 - Unsupported Media Type
type Status report
message Unsupported Media Type
description The server refused this request because the request entity is in
a format not` `supported by the requested resource for the requested method
(Unsupported Media Type).
然后我决定只使用请求模块进行一个超级简单的测试,我相信它正被jira-python模块使用,这段代码似乎让我登录。我收到了很好的回复:
import requests
r = requests.get(the_url, auth=(my username , password))
print r.text
有什么建议吗?
答案 0 :(得分:12)
以下是我在Python脚本中使用jira模块进行身份验证的方法:
from jira.client import JIRA
import logging
# Defines a function for connecting to Jira
def connect_jira(log, jira_server, jira_user, jira_password):
'''
Connect to JIRA. Return None on error
'''
try:
log.info("Connecting to JIRA: %s" % jira_server)
jira_options = {'server': jira_server}
jira = JIRA(options=jira_options, basic_auth=(jira_user, jira_password))
# ^--- Note the tuple
return jira
except Exception,e:
log.error("Failed to connect to JIRA: %s" % e)
return None
# create logger
log = logging.getLogger(__name__)
# NOTE: You put your login details in the function call connect_jira(..) below!
# create a connection object, jc
jc = connect_jira(log, "https://myjira.mydom.com", "myusername", "mypassword")
# print names of all projects
projects = jc.projects()
for v in projects:
print v
答案 1 :(得分:6)
以下Python脚本连接到Jira并执行基本身份验证并列出所有项目。
from jira.client import JIRA
options = {'server': 'Jira-URL'}
jira = JIRA(options, basic_auth=('username', 'password'))
projects = jira.projects()
for v in projects:
print v
它打印了您的Jira实例中可用的所有项目的列表。
答案 2 :(得分:1)
请勿更改库,而是将您的凭据放在〜/ .netrc文件中。
如果你把它们放在那里,你也可以使用curl或wget来测试你的电话。
我不确定与Jira 5.x的兼容性,目前仅测试7.x和6.4。如果你设置了一个测试实例,我也可以修改集成测试来对它运行。
我的幸运猜测是你用这种改变打破了它。
答案 3 :(得分:0)
问题:
从2019年6月开始,在Jira或Confluence Cloud中使用具有基本身份验证或基于cookie身份验证的REST端点的Atlassian Cloud用户将需要更新其应用程序或集成过程以使用API令牌,OAuth或Atlassian Connect。
2019年6月5日之后,尝试使用Atlassian帐户密码通过基本身份验证进行身份验证将返回无效的凭据错误。
参考:Deprecation of basic authentication with passwords for Jira and Confluence APIs
上述问题的解决方案:
您可以使用API令牌对Atlassian云产品的脚本或其他进程进行身份验证。您可以从Atlassian帐户生成令牌,然后将其复制并粘贴到脚本中。
如果您使用两步验证进行身份验证,则脚本将需要使用REST API令牌进行身份验证。
从您的Atlassian帐户创建API令牌的步骤:
参考:API tokens
Python 3.8代码参考
from jira.client import JIRA
jira_client = JIRA(options={'server': JIRA_URL}, basic_auth=(JIRA_USERNAME, JIRA_TOKEN))
issue = jira_client.issue('PLAT-8742')
print(issue.fields.summary)