2017-07-29 5 views
0

Ich versuche, Jira von Python an meinem Arbeitsplatz zugreifen und die grundlegende Operation, die ich tun möchte, ist Jira Probleme zu holen/zu erstellen/zu aktualisieren. Ich habe den Template-Code online angeschaut und versuche das zu nutzen, aber kein Glück. Ich habe jira api bereits mit pip installiert.Zugriff auf JIRA von Python

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) 

Und das ist seine Ausgabe:

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 = 

` Ich weiß, dass ich etwas tue hier falsch und damit dies sind die Dinge, die ich fragen will:

  • Wie Sie feststellen, Jira Server an Ihrem Arbeitsplatz.
  • Muss der Jira-Administrator Ruhe-API-Anrufe oder etwas anderes von der Admin-Anmeldung aktivieren? Gibt es eine Möglichkeit festzustellen, ob es von unserem Code deaktiviert ist?
  • Gibt es noch etwas, das ich installieren muss, abgesehen von der Installation von Jira durch Pip.
  • Wie mit Anmeldeinformationen umzugehen. Ich bin mir sicher, dass es einen besseren Weg gibt, als den Benutzernamen/das Passwort in Ihrer .py-Datei anzugeben. Kann mir jemand zeigen, wo ich diese Informationen finde?

Danke.

+0

Was meinst du mit "kein Glück"? Erhalten Sie Ausnahmen? Wenn ja, zeigen Sie uns den Traceback. Derzeit ist es unklar, was mit dem Code passiert, den Sie gezeigt haben (und natürlich können wir das JIRA-Setup Ihres Unternehmens nicht testen). – Blckknght

+0

@Blckknght - Ich habe meinen Beitrag mit seiner Ausgabe aktualisiert. Ich habe das Gefühl, dass ich etwas falsch mache oder einen Schritt verpasst habe, um auf Jira zuzugreifen. – Singo

+2

Ich bin kein JIRA-Experte (ich habe es verwendet, um Fehler zu melden, aber nie mit seinen APIs programmiert), aber nach dem doppelten Teil der URL in der Fehlermeldung zu urteilen, würde ich vermuten, dass Sie gehen sollten Der '/ rest/api/2'-Teil des Wertes, den Sie in Ihr' options'-Diktat setzen. – Blckknght

Antwort

0

Ich bin nicht sicher, welche Version des Jira-Python-Clients Sie verwenden, aber ein JIRA-Objekt zu instanziieren, übergeben Sie den Server nicht innerhalb der "Optionen" -Parameter (und Sie definitiv nicht die Weg zum REST api). Nach der Dokumentation:

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) 

So Ihre Instanziierung aussehen sollte:

from jira.client import JIRA 

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

Wenn Sie auth, dann wäre es:

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

Um zu bestätigen, haben Sie das Recht JIRA-Server, navigieren Sie zur Stamm-URL https://jira.mycompany.com und stellen Sie sicher, dass Sie den Anmeldebildschirm sehen und sich anmelden können (dies bestätigt, dass Ihr Benutzername und Ihr Passwort ebenfalls funktionieren).

Der Zugriff auf die JIRA-REST-API muss aktiviert sein, bevor Sie sie verwenden können. Um es zu testen, versuchen, mit ihm zu kommunizieren curl verwenden, z.B .:

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

Solange Python mit Servern kommunizieren kann mit GET und POST, sollten Sie nicht etwas anderes brauchen.

Für Benutzername und Passwort habe ich nur das Skript fragen an der Befehlszeile mit einer Anweisung, die das Passwort nicht zeigt. Ich benutze node.js, aber ich bin sicher, Python hat etwas ähnliches. Oder bewahren Sie sie in einer separaten Datei auf, die das Skript einliest, aber stellen Sie sicher, dass Sie die Datei nicht überprüfen!