Création automatique de tickets JIRA avec slack bot ~ développement de slack bot avec python ① ~

Que faire dans cet article

** Automatisation de la création de tickets JIRA ** ** Créez un mécanisme pour que les tickets JIRA soient automatiquement créés lorsque vous mentionnez avec Slack **

Si vous tweetez le contenu du ticket en joignant une mention au bot de slack comme suit スクリーンショット 2017-06-20 19.07.44.png

Le ticket est créé dans JIRA スクリーンショット 2017-06-20 19.12.40.png

Depuis que j'ai fait un tel mécanisme, j'écrirai aussi mon propre mémo

Environnement d'exécution

 Vagrant.configure(2) do |config|
  config.vm.box = "bento/centos-6.7"

  config.vm.define "dev" do |node|
    node.vm.network "private_network", ip: "192.168.10.10"
    node.vm.synced_folder "/Users/takahirono7/projects/", "/root/project"
  end
end

La définition de synced_folder est très pratique car vous pouvez synchroniser le répertoire sur votre Mac local et Vagrant. La méthode est résumée ci-dessous Synchroniser les fichiers entre le système d'exploitation invité fonctionnant sur Vagrant et Mac

Ajouter un utilisateur de bot

Vous devez d'abord créer un utilisateur de bot qui s'exécute sur Slack

Veuillez cliquer sur "Créer un nouvel utilisateur de bot" à l'URL suivante pour créer un utilisateur de bot https://api.slack.com/bot-users

スクリーンショット 2017-06-20 19.31.54.png

Pour plus de détails, veuillez vous référer aux personnes suivantes qui l'ont parfaitement résumé. Créer Slackbot avec Python (1)

Après avoir terminé la création du compte, l'article suivant

Ajouter des fonctionnalités au bot

Veuillez effectuer au point Créer un bot Slack avec la bibliothèque slackbot de Python

Ce domaine est expliqué en détail par les pionniers, je ne le décrirai donc pas. J'apprécie vraiment cela.

En passant à la partie ci-dessus, je pense que la structure des répertoires est la suivante. Ci-dessous, je cite l'article ci-dessus de sukesuke

slackbot         #Un annuaire qui organise les programmes. N'importe quel nom va bien
├─ run.py        #Démarrez le bot en exécutant ce programme
├─ slackbot_settings.py   #Fichier pour écrire les paramètres liés au bot
└─ plugins                #Ajouter une fonctionnalité de bot à ce répertoire
   ├─ __init__.py         #Un fichier pour indiquer le module. Vider c'est bien
   └─ my_mention.py       #Présente chaque fichier. N'importe quel nom va bien

Nous allons ajouter une fonction pour créer un lien vers jira vers my_mention.py.

L'implémentation a utilisé la bibliothèque python-jira. J'ai pensé à l'implémenter avec curl ou urllib, mais je pense que la bibliothèque python-jira est la plus simple. https://jira.readthedocs.io/en/master/

Ajoutez ce qui suit à my_mention.py

from jira import JIRA
from jira.client import JIRA
@listen_to('create_ticket')
def create_tickets(message):
    options = {
        'server': 'https://**domaine jira**/jira'
        }
    body  = message.body['te i xt']

    jira = JIRA(options, basic_auth=('bot_test','bot_test'))
    issue_dict = {
        'project': {'key': 'TES'},
        'summary': 'New issue from jira-python',
        'description': body ,
        'issuetype': {'name': 'tâche'}
        }
    new_issue = jira.create_issue(fields=issue_dict)
    message.reply('Créé un ticket')
#Obtenir un objet au format suivant
# [<JIRA Issue: key='TES-4644', id='59893'>]
    last_ticket = jira.search_issues('project = "TES" AND reporter = bot_test ORDER BY createdDate DESC', maxResults = 1)

# last_ticket[0]alors"TES-4659"などのticket keyが取得alorsきる
    message.reply("https://Domaine JIRA/jira/projects/TES/issues/%s" %(last_ticket[0]))

La description

jira = JIRA(options, basic_auth=('bot_test','bot_test'))

Fournissez des informations d'authentification de base lors de l'instanciation de JIRA. N'oubliez pas de créer un utilisateur côté JIRA à l'avance

new_issue = jira.create_issue(fields=issue_dict)

Vous pouvez créer un ticket avec la méthode create_issue. En option, ajoutez des informations sur la clé de projet, le résumé, la description et le type de problème. Ici, le contenu de la description est considéré comme le contenu du message slack avec body = message.body ['text'].

    last_ticket = jira.search_issues('project = "TES" AND reporter = bot_test ORDER BY createdDate DESC', maxResults = 1)

# last_ticket[0]alors"TES-4659"などのticket keyが取得alorsきる
    message.reply("https://**domaine jira**/jira/projects/TES/issues/%s" %(last_ticket[0]))

Je recherche des tickets JIRA avec la méthode jira.search_issues. Les résultats de la recherche de tickets seront renvoyés dans une liste, alors définissez la clé sur [0] pour obtenir la clé de ticket. En ajoutant la clé obtenue à la fin de l'URL du domaine jira, l'URL du ticket est obtenue et renvoyée.

Avec ce type d'implémentation, nous avons pu créer des tickets avec du mou comme décrit au début. Je pense à implémenter plus de fonctions autour de JIRA, donc je le posterai quand j'aurai une histoire.

Ticket JIRA avec bot slack → Automatisation de la notification Slack ~ développement de bot slack avec python② ~

Relation

Création automatique de tickets JIRA avec slack bot ~ développement de slack bot avec python ① ~ Ticket JIRA avec bot slack → Automatisation de la notification Slack ~ développement de bot slack avec python② ~ Avertir slack lorsque la page de vente du commutateur est mise à jour ~ développement du bot slack avec python ③ ~ Demandez au bot de vous indiquer la météo (informations sur les précipitations) à l'aide de l'API d'informations météorologiques (YOLP) fournie par Yahoo ~ développement du bot slack ④ ~ avec python

Recommended Posts

Création automatique de tickets JIRA avec slack bot ~ développement de slack bot avec python ① ~
Automatisez les notifications Slack pour les tickets JIRA attendus aujourd'hui ~ Développement de slack bot avec python
Création de chatbot Slack Python
Notifier slack lorsque la page de vente du commutateur est mise à jour ~ développement de bot slack avec python ③ ~
Lire et écrire des fichiers avec Slackbot ~ Développement de bot avec Python ~
Publiez sur Slack avec Python 3
Développement de jeux Othello avec Python
Facile avec Slack en utilisant Bot #NowPlaying
Configurer un environnement de développement Python avec Atom
Développement d'applications avec Docker + Python + Flask
[Environnement de développement] Python avec Xcode [Avec transition d'écran]
Client API Slack simple réalisé avec Python
Méthode de mise à jour automatique par python Pyinstaller exe
Développement de slack bot avec python en utilisant chat.postMessage
Création WebApi avec Python (création CRUD) Pour les débutants
Création de tableaux Excel avec Python [Table de gestion des progrès]
Faisons un bot Twitter avec Python!
Demandez au bot de vous indiquer la météo (informations sur les précipitations) à l'aide de l'API d'informations météorologiques (YOLP) fournie par Yahoo ~ développement de bot slack avec python ④ ~
Discord bot raspberry pi zéro avec python [Note]
Créer un bot Twitter Trend avec heroku + Python
Fonctionnement automatique de Chrome avec Python + Sélénium + pandas
La requête [Développement Web avec Python] est également redirigée
[Python] Créer un environnement de développement Django avec Docker
Déplacer la scène automatique THORLABS avec Python [pour recherche]
LINE BOT avec Python + AWS Lambda + API Gateway
Exemple de notification Slack avec python lambda
Étapes pour créer un bot Twitter avec Python
Vitesse explosive avec Python (bouteille)! Développement d'API Web
Création récente de classement à l'aide de l'API Qiita avec Python
Création d'un outil de vente simple avec Python GUI: création de devis
Poursuite du développement multi-plateforme avec Electron et Python
[Python] Mention à plusieurs personnes avec l'API de Slack
[Développement Web avec Python] Précautions lors de l'enregistrement des cookies
Flux pour terminer l'authentification Slack avec Flask (Python)
Made Mattermost Bot avec Python (+ Flask)
Obtenez un environnement de développement Python rapide avec Poetry