Maison > développement back-end > Tutoriel Python > Automatisation de la création de tickets JIRA avec une API Flask : un guide d'intégration de Webhook GitHub

Automatisation de la création de tickets JIRA avec une API Flask : un guide d'intégration de Webhook GitHub

Patricia Arquette
Libérer: 2024-12-30 09:00:17
original
983 Les gens l'ont consulté

Rationalisez votre flux de travail en générant automatiquement des tickets JIRA à partir des commentaires de problèmes GitHub à l'aide de Python et Flask

? Introduction

Bienvenue dans le monde du DevOps ! Aujourd'hui, nous plongeons dans un projet passionnant qui relie Jira et GitHub pour une intégration transparente. L'objectif de ce projet est d'automatiser la création de tickets Jira directement à partir des commentaires de problèmes GitHub, ce qui permet de gagner du temps et de réduire les efforts manuels des développeurs.

Voici comment nous allons aborder ce projet :

  • Configurer une API Flask : nous lancerons une instance EC2 basée sur t2.micro Ubuntu pour héberger notre application Flask.
  • Configurer Jira : Nous allons créer un projet sur Jira et utiliser son API pour la création de tickets.
  • Intégrer les API : en fournissant un jeton API Jira à notre application Flask, nous lui permettreons d'interagir avec Jira.

Une fois que tout est configuré, notre application Flask fera office d'API webhook pour GitHub. Chaque fois qu'un développeur commente /jira sur un problème GitHub, le programme crée automatiquement un ticket Jira correspondant, visible sur le tableau de bord Jira. Passionnant, non ? Commençons !


? Pré-requis

Avant de vous lancer dans le projet, assurez-vous d'avoir les éléments suivants prêts :

  • Comptes GitHub et Jira : vous aurez besoin de comptes actifs sur les deux plateformes pour configurer l'intégration.
  • Flask installé : assurez-vous que Flask est configuré dans votre environnement Python. Sinon, vous pouvez l'installer en utilisant :
pip install flask
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Compréhension de base d'EC2 et de Flask : La familiarité avec la configuration d'une instance EC2 et la création d'applications Flask simples vous aidera à suivre en douceur.

Une fois ces prérequis en place, vous êtes tous prêts à lancer ce projet !


? Configuration de l'instance EC2 et de l'application Flask

Commençons le projet en créant et en configurant une instance EC2 pour héberger notre application Flask. Suivez ces étapes :

Étape 1 : Créer l'instance EC2

  • Accédez au tableau de bord AWS EC2 et créez une nouvelle instance basée sur t2.micro Ubuntu.
  • Nommez l'instance jira-github-integration.

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

  • Téléchargez le fichier de paire de clés pour l'accès SSH.
  • Ouvrez le port 5000 dans le groupe de sécurité pour accéder à l'application flask.

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Étape 2 : SSH dans l'instance
Utilisez le fichier de paire de clés téléchargé pour vous connecter en SSH à l'instance :

pip install flask
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Étape 3 : configurer l'environnement Python
Exécutez les commandes suivantes pour installer Python et Flask :

ssh -i your-key.pem ubuntu@<instance-public-ip>
Copier après la connexion
Copier après la connexion

Cela mettra en place toutes les dépendances nécessaires au projet.

Étape 4 : Créer l'application Flask

  • Créez un nouveau fichier nommé github_jira.py :
sudo apt update  
sudo apt install python3-pip python3-venv  
python3 -m venv myvenv  
source myvenv/bin/activate  # Activate the virtual environment  
pip3 install flask          # Install Flask in the virtual environment
Copier après la connexion
Copier après la connexion

Ajoutez le contenu suivant au fichier :

nano github_jira.py
Copier après la connexion
Copier après la connexion

? Générer un jeton API Atlassian

Avant d'exécuter le script github_jira.py, nous avons besoin de deux informations essentielles :

  • Jeton API Atlassian
  • Votre nom de domaine Atlassian

Étapes pour générer le jeton API Atlassian :

  • Connectez-vous à votre compte Atlassian :
  • Visitez Atlassian et connectez-vous avec vos identifiants.

Accédez aux paramètres du compte :

  • Cliquez sur votre photo de profil ou votre avatar dans le coin supérieur droit.
  • Sélectionnez Paramètres du compte dans le menu déroulant.
  • Allez dans l'onglet Sécurité :
  • Dans la page Paramètres du compte, cliquez sur l'onglet Sécurité.
  • Sous la section Jetons API, cliquez sur Créer un jeton API.

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Créer un nouveau jeton API :

  • Fournissez une description (par exemple, intégration GitHub Jira) et définissez une date d'expiration pour le jeton si vous y êtes invité.
  • Cliquez sur Créer et votre jeton API sera généré.

Copiez le jeton API :

  • Cliquez sur le bouton Copier pour copier le jeton.
  • Collez le jeton dans la variable API_TOKEN de votre script github_jira.py :
 import requests
 from requests.auth import HTTPBasicAuth
 import json
 from flask import Flask, request

 app = Flask(__name__)

 # Define a route that handles POST requests
 @app.route('/createJira', methods=['POST'])
 def createJira():
     # The comment's body field in the GitHub payload
     comment_data = request.json.get("comment", {})
     comment_body = comment_data.get("body", "")

     # Check if the body field of the comment is "/jira"
     if comment_body == "/jira":
         print("Condition met. Proceeding with POST request...")

         # Jira API details
         url = "https://<Your-Atlassian-domain>/rest/api/3/issue"
         API_TOKEN = "<YOUR_API_TOKEN>"
         auth = HTTPBasicAuth("<YOUR_EMAIL_ADDRESSS_CONNECTED_TO_THE_ACCOUNT>", API_TOKEN)

         headers = {
             "Accept": "application/json",
             "Content-Type": "application/json"
         }

         payload = json.dumps({
             "fields": {
                 "description": {
                     "content": [
                         {
                             "content": [
                                 {
                                     "text": "Order entry fails when selecting supplier.",
                                     "type": "text"
                                 }
                             ],
                             "type": "paragraph"
                         }
                     ],
                     "type": "doc",
                     "version": 1
                 },
                 "project": {
                     "key": "<YOUR_KEY>"
                 },
                 "issuetype": {
                     "id": "<YOUR_ISSUE_ID>"
                 },
                 "summary": "Main order flow broken",
             },
             "update": {}
         })

         # POST request to create an issue in Jira
         response = requests.post(url, data=payload, headers=headers, auth=auth)
         print("POST request response:", response.status_code, response.text)

         # Return the response back
         return json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))
     else:
         print("No matching comment found. POST request will not be made.")
         return json.dumps({"error": "No matching comment found. POST request was not made."}, sort_keys=True, indent=4, separators=(",", ": "))

 if __name__ == '__main__':
     app.run(host='0.0.0.0', port=5000)
Copier après la connexion

Ajoutez votre domaine Atlassian :
Remplacez dans la variable url avec votre nom de domaine Atlassian. Par exemple, si l'URL de votre tableau de bord Jira est https://yourworkspace.atlassian.net, utilisez yourworkspace.atlassian.net comme domaine.


? Configuration des champs obligatoires dans le script github_jira.py

Avant d'exécuter le script, vous devez mettre à jour quelques champs importants dans le fichier github_jira.py pour garantir que l'intégration fonctionne de manière transparente avec votre compte Jira.

1. Authentification HTTP de base (adresse e-mail)
Remplacez le premier paramètre de HTTPBasicAuth par l'adresse e-mail liée à votre compte Jira.

API_TOKEN = "<Your-Generated-API-Token>"
Copier après la connexion

2. Clé du projet

  • La clé du projet identifie de manière unique le projet Jira dans lequel les tickets seront créés.
  • Pour trouver la clé de votre projet :
  • Accédez au tableau de bord Jira.
  • Sous l'onglet Projets, localisez le projet dans lequel les tickets seront créés.
  • La clé du projet est affichée entre parenthèses simples (()). Par exemple, dans le projet Project ABC (SCRUM), la clé est SCRUM.

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Remplacez le champ "clé" sous les champs du script :

pip install flask
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

3. ID du type de problème

  • L'ID du type de problème est un identifiant unique pour le type de problème (par exemple, bug, histoire, tâche).
  • Pour trouver l'ID du problème :
  • Dans votre tableau de bord Jira, cliquez sur les trois points dans le coin supérieur droit et sélectionnez Gérer les champs personnalisés.

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

  • Dans les paramètres du projet, accédez à Types de problèmes dans le menu de gauche.
  • Cliquez sur Story ou sur le type de problème que vous souhaitez utiliser.
  • Regardez l'URL dans votre navigateur. À la fin de l'URL, vous trouverez une valeur numérique (par exemple, 10005). Il s'agit de votre identifiant de type de problème.

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Remplacez le champ "id" sous issuetype dans le script :

ssh -i your-key.pem ubuntu@<instance-public-ip>
Copier après la connexion
Copier après la connexion

Exemple de champs mis à jour dans le script :

sudo apt update  
sudo apt install python3-pip python3-venv  
python3 -m venv myvenv  
source myvenv/bin/activate  # Activate the virtual environment  
pip3 install flask          # Install Flask in the virtual environment
Copier après la connexion
Copier après la connexion

Dernière étape : exécuter le script
Une fois ces champs mis à jour, exécutez le script en utilisant :

nano github_jira.py
Copier après la connexion
Copier après la connexion

Votre script est maintenant entièrement configuré et prêt à intégrer les commentaires GitHub avec la création de tickets Jira !


? Ajout du Webhook pour terminer l'intégration

Maintenant que notre script est prêt, la dernière étape consiste à configurer un webhook dans votre référentiel GitHub. Ce webhook écoutera des événements spécifiques (dans ce cas, émettra des commentaires) et déclenchera l'application Flask.

Étapes pour ajouter le Webhook :

  • Accédez au référentiel GitHub :
  • Ouvrez le référentiel GitHub dans lequel vous souhaitez tester ce projet. Accéder aux paramètres du référentiel :
  • Cliquez sur l'onglet Paramètres situé dans le menu du référentiel.
  • Dans la barre de navigation de gauche, sélectionnez Webhooks sous la section « Code et automatisation ».

Ajouter un nouveau webhook :

  • Cliquez sur le bouton Ajouter un webhook.
  • Configurer le Webhook :
  • URL de la charge utile : Entrez l'URL de votre application Flask. Cela doit inclure le DNS public de votre instance EC2 et la route vers le point de terminaison Flask :
pip install flask
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Type de contenu :
    Sélectionnez application/json dans le menu déroulant.

  • Déclencheurs :
    Sélectionnez l'option "Laissez-moi sélectionner des événements individuels".
    Cochez la case Émettre des commentaires uniquement.

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Enregistrer le Webhook :

  • Cliquez sur le bouton Ajouter un webhook pour enregistrer vos paramètres.

Test de l'intégration

  • Créer un problème sur GitHub :
  • Accédez à l'onglet Problèmes de votre référentiel.
  • Cliquez sur Nouveau numéro, fournissez un titre et une description, puis enregistrez-le.
  • Commentez le problème :
  • Ouvrez le ticket créé et ajoutez un commentaire avec /jira.

Observez la magie :

  • Le webhook déclenchera et enverra une requête POST au serveur Flask.
  • L'application Flask traitera la demande et créera un ticket Jira à l'aide de l'API Jira.

Vérifiez sur le tableau de bord Jira :

  • Ouvrez votre tableau de bord Jira et accédez au projet spécifié dans votre script.
  • Vous devriez voir un ticket nouvellement créé correspondant au commentaire du problème GitHub.

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide


? Conclusion

Félicitations ! ? Vous avez terminé avec succès un projet pratique intégrant GitHub et Jira. En utilisant une application Flask comme intermédiaire, nous avons automatisé le processus de création de tickets Jira directement à partir des commentaires de problème GitHub.

Dans ce projet, nous avons couvert :

  • Configuration d'une instance EC2 pour héberger une application Flask.
  • Configurer l'application Flask pour interagir avec l'API Jira.
  • Création et ajout d'un webhook GitHub pour déclencher le workflow.
  • Observer la création transparente de tickets Jira à partir des commentaires GitHub.

Cette intégration simplifie la collaboration entre les développeurs et les chefs de projet en réduisant les efforts manuels et en garantissant que les tâches importantes ne passent pas entre les mailles du filet. Il s'agit d'une démonstration pratique de la façon dont l'automatisation peut améliorer la productivité dans un flux de travail DevOps.

N'hésitez pas à vous appuyer sur cette base pour personnaliser davantage l'intégration ou explorer des cas d'utilisation supplémentaires, tels que l'automatisation du suivi des requêtes Pull GitHub dans Jira ou l'intégration d'autres outils dans votre flux de travail.

Nous espérons que vous avez trouvé ce projet informatif et engageant. ? Pour un blog plus informatif, suivez-moi sur Hashnode, X(Twitter) et LinkedIn.

Bon codage et automatisation ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal