[PYTHON] Verwenden Sie die JIRA-API

Hallo. Ich bin Matsumoto von der Abteilung für Mediensystementwicklung am 17. Tag des mediba Adventskalenders 2016.

Bei mediba verwenden mehrere Teams JIRA von atlassian für das Projektmanagement. Ich verwende es auch, um Aufgaben zu verwalten, die regelmäßig ausgeführt werden, aber ich veröffentliche jedes Mal eine Geschichte und veröffentliche Unteraufgaben für Mitglieder ... Da es nüchtern ist und manchmal versehentlich vergessen wird, habe ich versucht, die Arbeit mithilfe der API zu vereinfachen.

Was du machen willst

--Erstellen Sie wöchentliche Probleme mit periodischen Berichten mithilfe der JIRA-API und erstellen Sie so viele Unteraufgabenprobleme, wie Mitglieder vorhanden sind

Umwelt / Vorbereitung

Implementierung

import

import


import requests
import json
import datetime

API-Authentifizierung

Es gibt zwei Authentifizierungsmethoden für die Verwendung der JIRA-API. Dieses Mal verwenden wir Basic HTTP.

Erstellen Sie einen Authentifizierungsschlüssel mit BASE64-Codierung.

Authentifizierung


import base64
auth_str = 'JIRA-Konto:JIRA Passwort'
authkey = base64.encodestring(auth_str.encode("utf8")).decode("ascii")

Holen Sie sich ein Problem

Erfassen Sie für eine Parameteranalyse wie den Problemtyp ein vorhandenes Problem und beziehen Sie sich darauf.

Problem bekommen


issue_data = requests.get(
    'https://JIRA URL/rest/api/2/issue/Problem-ID, die Sie erhalten möchten',
    headers={'Content-Type': 'application/json',
             'Authorization': 'In Basic erstellter Authentifizierungsschlüssel}'})

Der Zugriff auf die API ist möglich, indem der Authentifizierungsschlüssel in die Headerinformationen aufgenommen wird. Rufen Sie in der Antwort die Informationen ab, die zum Erstellen des Problems erforderlich sind.

Ich denke, dass sich dieser Bereich abhängig von den JIRA-Einstellungen ändern wird.

Fügen Sie ein Problem hinzu

Bereiten Sie zunächst die Parameter vor, die in der Anforderung verwendet werden sollen.

Parameter


#Verantwortliche Person für Kinderfragen
assignee = ['Verantwortliche Person 1 ID', 'Ausweis der verantwortlichen Person 2', 'Ausweis der verantwortlichen Person 3']
#Meldefrist
duedate = str(datetime.date.today() + datetime.timedelta(3))

Dies ist eine Anforderung zum Hinzufügen eines Problems.

Problem hinzufügen


addissue = requests.post(
    'https://JIRA URL/rest/api/2/issue/',
    json.dumps({
        "fields": {
            'project': {
                'key': 'Projektschlüssel'
            },
            'assignee': {
                'name': 'Verantwortliche Person für die Elternfrage'
            },
            'reporter': {
                'name': 'Reporter der Elternausgabe'
            },
            'priority': {
                'id': '3'
            },
            'issuetype': {
                'id': '10001'
            },
       'labels': 'Markenname',
            'summary':'Zusammenfassung',
            'description': description,
            'duedate': duedate,
        }
    }),
    headers={'Content-Type': 'application/json',
             'Authorization': 'Grundlegender Authentifizierungsschlüssel}'}
)

Nachdem das übergeordnete Problem hinzugefügt wurde, fügen Sie das untergeordnete Problem als Unteraufgabe hinzu. Da die ID des übergeordneten Problems für das übergeordnete Problem erforderlich ist, wird die ID verwendet, die aus dem vorherigen Anforderungsergebnis erhalten wurde.

Problem hinzufügen


for name in assignee:
  addsub = requests.post(
      'https://JIRA URL/rest/api/2/issue/',
      json.dumps({
          "fields": {
              'project': {'key': 'Projektschlüssel'},
              'summary': summary + '_' + name,
              'assignee': {
                  'name': name
              },
              'reporter': {
                  'name': 'Übergeordneter Ticketreporter'
              },
              'priority': {
                  'id': '3'
              },
              'parent': {
                  'id': addissue.json()['id']
              },
              'issuetype': {
                  'id': '5'
              },
              'labels': 'Markenname',
              'description': description,
              'duedate': duedate,
          }
      }),
      headers={'Content-Type': 'application/json',
               'Authorization': 'Grundlegender Authentifizierungsschlüssel}'}
  )

Ausführungsergebnis

Das obige ist die Antwort des Ausführungsergebnisses.

Antwort


{'id': '42601',
 'key': 'Projektschlüssel-452',
 'self': 'https://JIRA URL/rest/api/2/issue/42601'}
'42601'
{'id': '42602',
 'key': 'Projektschlüssel-453',
 'self': 'https://JIRA URL/rest/api/2/issue/42602'}
{'id': '42603',
 'key': 'Projektschlüssel-454',
 'self': 'https://JIRA URL/rest/api/2/issue/42603'}
{'id': '42604',
 'key': 'Projektschlüssel-455',
 'self': 'https://JIRA URL/rest/api/2/issue/42604'}

Greifen Sie tatsächlich auf JIRA zu, bestätigen Sie, dass das übergeordnete und das untergeordnete Problem normal hinzugefügt wurden, und beenden Sie den Vorgang.

Zusammenfassung

Sobald Sie die Parameter kennen, funktioniert dies problemlos, indem Sie die API anfordern. Wenn Sie also JIRA verwenden, warum sollten Sie dies nicht in Betracht ziehen? Natürlich kann stattdessen Curl verwendet werden. Morgen, den 18., werden "Remote Development Initiatives" von Mr. Sone sein.

Recommended Posts

Verwenden Sie die JIRA-API
Verwenden Sie die Twitter-API mit Python
Verwenden Sie configparser, wenn Sie die API verwenden
Verwenden Sie die Unterschall-API mit Python3
Verwenden Sie die e-Stat-API von Python
Verwenden Sie die REST-API mit JIRA (Benutzerregistrierung als Beispiel).
Verwenden Sie APIs, die nicht in Twython implementiert sind
Verwenden Sie die kabu Station® API von Python
Verwendung der Python-API von OpenPose
Verwenden Sie die Flickr-API von Python
Wie benutzt man Bing Search API?
[Python] Verwendung der Typetalk-API
Verwenden Sie die Google Analytics-API von Python
Verwenden Sie DeepLabCut
Verwenden Sie die Google Cloud Vision-API von Python
Verwenden Sie pycscope
Verwenden Sie Sammlungen
Verwenden Sie: Django-MySQL
Verwenden Sie Pylements.rb
Verwenden Sie Numpy
Verwenden Sie Pandas-Ply
Verwendung der Cloud Vision API von GCP
Verwenden Sie GitPython
Verwenden Sie Miniconda
Verwenden Sie die Twitter-API (API-Kontoregistrierung und Tweet-Erfassung).
Vorgehensweise zur Verwendung der WEG-API von TeamGant (mit Python)
Lassen Sie uns Wiki-Informationen mithilfe der MediaWiki-API abrufen
Verwendung der Google Cloud Translation API
Bis Sie die Google Speech API verwenden können
Verwendung der NHK-Programmführer-API
Verwenden Sie die Kaggle-API in einem Docker-Container
[GoogleCloudPlatform] Verwenden Sie die Google Cloud-API mit der API-Clientbibliothek