2017-07-29 8 views
0

私は私の仕事場でpythonからjiraにアクセスしようとしています。私がしようとする基本的な操作は、jiraの問題をフェッチ/作成/更新することです。私はテンプレートコードをオンラインで見て、それを使用しようとしていますが、運はありません。私はすでにpipを使ってjira apiをインストールしました。PythonからJIRAにアクセス

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管理者は、残りのAPI呼び出しを有効にする必要がありますか、またはadminログインから何か他のものを有効にする必要がありますか?コードから無効になっているかどうかを判断する方法はありますか?
  • pipからjiraをインストールする以外にインストールが必要なことはありますか?
  • ログイン資格情報を処理する方法。あなたの.pyファイルにユーザ名/パスワードを指定するよりも良い方法があると確信しています。誰かがその情報を見つける場所を教えてくれますか?

ありがとうございます。

+0

「運がない」とはどういう意味ですか?あなたは例外を受け取りますか?もしそうなら、トレースバックを見せてください。現在、あなたが示したコードで何が起こっているのかは不明です(そして、あなたの会社のJIRA設定をテストすることはできません)。 – Blckknght

+0

@Blckknght - 投稿した内容を更新しました。私は完全に何かを間違っていると感じたり、ジラにアクセスしようとする際に何らかのステップを逃しています。 – Singo

+2

私はJIRAのエキスパートではありません(私はバグを報告するために使ってきましたが、APIはプログラミングしていませんでした)。しかし、エラーメッセージのURLの重複部分で判断すると、 '/ rest/api/2'の部分を' options'ディクテーションに入れます。 – Blckknght

答えて

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) 

だからあなたのインスタンス化が次のようになります:ドキュメントによると、あなたがのauthする必要がある場合、それは次のようになり

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へのアクセスは、使用する前に有効にする必要があります。それをテストするには、限り、PythonはGETとPOSTを使用してサーバーと通信できるよう:例えば、カールを使用してそれと通信

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

を試してみてください、あなたが何かを必要はありません。

ユーザー名とパスワードについて私は、スクリプトにコマンドラインでパスワードを表示しないように指示するだけです。私はnode.jsを使用しますが、Pythonには何か類似していると確信しています。または、スクリプトを別のファイルに保存しますが、ファイルをチェックインしないようにしてください。

関連する問題