[PYTHON] Utiliser l'API JIRA

Bonjour. Je suis Matsumoto du département de développement du système médiatique le 17e jour du calendrier de l'avent mediba 2016.

Chez mediba, plusieurs équipes utilisent le JIRA d'atlassian pour la gestion de projet. Je l'utilise également pour gérer les tâches qui se produisent régulièrement, mais je publie une histoire à chaque fois et publie des sous-tâches pour les membres ... Parce que c'est sobre et parfois oublié par inadvertance, j'ai essayé de simplifier le travail en utilisant l'API.

Chose que tu veux faire

--Créez des problèmes de rapport périodique hebdomadaire à l'aide de l'API de JIRA et créez autant de problèmes de sous-tâches qu'il y a de membres

Environnement / préparation

la mise en oeuvre

import

import


import requests
import json
import datetime

Authentification API

Il existe deux méthodes d'authentification pour utiliser l'API de JIRA, et cette fois, nous utiliserons le HTTP de base.

Créez une clé d'authentification à l'aide du codage BASE64.

Authentification


import base64
auth_str = 'Compte JIRA:Mot de passe JIRA'
authkey = base64.encodestring(auth_str.encode("utf8")).decode("ascii")

Obtenez un problème

Pour l'analyse des paramètres tels que le type de problème, acquérez et référez-vous aux problèmes existants.

Obtenir un problème


issue_data = requests.get(
    'https://URL JIRA/rest/api/2/issue/ID du problème que vous souhaitez obtenir',
    headers={'Content-Type': 'application/json',
             'Authorization': 'Clé d'authentification créée sur Basic}'})

L'accès à l'API est possible en incluant la clé d'authentification dans les informations d'en-tête. À partir de la réponse, obtenez les informations nécessaires pour créer le problème.

--Priority = la priorité 3 est moyenne --Issue type = issue type 5 est une sous-tâche

Je pense que cette zone changera en fonction des paramètres JIRA.

Ajouter un problème

Tout d'abord, préparez les paramètres à utiliser dans la requête.

Paramètres


#Responsable de la problématique enfant
assignee = ['Responsable 1 pièce d'identité', 'ID de la personne responsable 2', 'Pièce d'identité du responsable 3']
#Date limite de rapport
duedate = str(datetime.date.today() + datetime.timedelta(3))

Ceci est une demande d'ajout d'un problème.

Ajouter un problème


addissue = requests.post(
    'https://URL JIRA/rest/api/2/issue/',
    json.dumps({
        "fields": {
            'project': {
                'key': 'Clé du projet'
            },
            'assignee': {
                'name': 'Responsable de la question parentale'
            },
            'reporter': {
                'name': 'Journaliste du problème des parents'
            },
            'priority': {
                'id': '3'
            },
            'issuetype': {
                'id': '10001'
            },
       'labels': 'Nom de l'étiquette',
            'summary':'Résumé',
            'description': description,
            'duedate': duedate,
        }
    }),
    headers={'Content-Type': 'application/json',
             'Authorization': 'Clé d'authentification de base}'}
)

Maintenant que le problème parent est ajouté, ajoutez le problème enfant en tant que sous-tâche. Étant donné que l'ID du problème parent est requis pour le parent, celui obtenu à partir du résultat de la requête précédente sera utilisé.

Ajouter un problème


for name in assignee:
  addsub = requests.post(
      'https://URL JIRA/rest/api/2/issue/',
      json.dumps({
          "fields": {
              'project': {'key': 'Clé du projet'},
              'summary': summary + '_' + name,
              'assignee': {
                  'name': name
              },
              'reporter': {
                  'name': 'Journaliste de ticket parent'
              },
              'priority': {
                  'id': '3'
              },
              'parent': {
                  'id': addissue.json()['id']
              },
              'issuetype': {
                  'id': '5'
              },
              'labels': 'Nom de l'étiquette',
              'description': description,
              'duedate': duedate,
          }
      }),
      headers={'Content-Type': 'application/json',
               'Authorization': 'Clé d'authentification de base}'}
  )

Résultat d'exécution

Ce qui précède, la réponse du résultat de l'exécution.

réponse


{'id': '42601',
 'key': 'Clé du projet-452',
 'self': 'https://URL JIRA/rest/api/2/issue/42601'}
'42601'
{'id': '42602',
 'key': 'Clé du projet-453',
 'self': 'https://URL JIRA/rest/api/2/issue/42602'}
{'id': '42603',
 'key': 'Clé du projet-454',
 'self': 'https://URL JIRA/rest/api/2/issue/42603'}
{'id': '42604',
 'key': 'Clé du projet-455',
 'self': 'https://URL JIRA/rest/api/2/issue/42604'}

En fait, accédez à JIRA, confirmez que le problème parent et le problème enfant ont été ajoutés normalement et terminez.

Résumé

Une fois que vous connaissez les paramètres, cela fonctionnera facilement en demandant simplement l'API, donc si vous utilisez JIRA, pourquoi ne pas l'envisager? Bien sûr, curl peut être utilisé à la place. Demain, le 18 sera "Initiatives de développement à distance" de M. Sone.

Recommended Posts

Utiliser l'API JIRA
Utiliser l'API Twitter avec Python
Utilisez configparser lors de l'utilisation de l'API
Utiliser l'API subsonique avec python3
Utilisez l'API e-Stat de Python
Utiliser l'API REST avec JIRA (enregistrement de l'utilisateur comme exemple)
Utiliser des API non implémentées dans twython
Utilisez l'API kabu Station® de Python
Comment utiliser l'API Python d'OpenPose
Utilisez l'API Flickr de Python
Comment utiliser l'API Bing Search
[Python] Comment utiliser l'API Typetalk
Utiliser l'API Google Analytics de Python
Utilisez DeepLabCut
Utiliser l'API Google Cloud Vision de Python
Utiliser pycscope
Utilisez des collections.
Utilisation: Django-MySQL
Utilisez Pygments.rb
Utilisez Numpy
Utilisez pandas-ply
Comment utiliser l'API Cloud Vision de GCP
Utilisez GitPython
Utiliser Miniconda
Utiliser l'API Twitter (enregistrement de compte API et acquisition de tweet)
Procédure pour utiliser l'API WEB de TeamGant (en utilisant python)
Obtenons les informations Wiki en utilisant l'API MediaWiki
Comment utiliser l'API Google Cloud Translation
Jusqu'à ce que vous puissiez utiliser l'API Google Speech
Comment utiliser l'API du guide des programmes NHK
Utilisez l'API Kaggle dans un conteneur Docker
[GoogleCloudPlatform] Utiliser l'API Google Cloud avec la bibliothèque cliente d'API