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
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 :
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 !
Avant de vous lancer dans le projet, assurez-vous d'avoir les éléments suivants prêts :
pip install flask
Une fois ces prérequis en place, vous êtes tous prêts à lancer ce projet !
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
É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
É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>
Cela mettra en place toutes les dépendances nécessaires au projet.
Étape 4 : Créer l'application Flask
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
Ajoutez le contenu suivant au fichier :
nano github_jira.py
Avant d'exécuter le script github_jira.py, nous avons besoin de deux informations essentielles :
Étapes pour générer le jeton API Atlassian :
Accédez aux paramètres du compte :
Créer un nouveau jeton API :
Copiez le jeton API :
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)
Ajoutez votre domaine Atlassian :
Remplacez
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>"
2. Clé du projet
Remplacez le champ "clé" sous les champs du script :
pip install flask
3. ID du type de problème
Remplacez le champ "id" sous issuetype dans le script :
ssh -i your-key.pem ubuntu@<instance-public-ip>
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
Dernière étape : exécuter le script
Une fois ces champs mis à jour, exécutez le script en utilisant :
nano github_jira.py
Votre script est maintenant entièrement configuré et prêt à intégrer les commentaires GitHub avec la création de tickets Jira !
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 :
Ajouter un nouveau webhook :
pip install flask
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.
Enregistrer le Webhook :
Test de l'intégration
Observez la magie :
Vérifiez sur le tableau de bord Jira :
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 :
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!