Optimieren Sie Ihren Workflow, indem Sie mithilfe von Python und Flask automatisch JIRA-Tickets aus GitHub-Problemkommentaren generieren
Willkommen in der Welt von DevOps! Heute tauchen wir in ein spannendes Projekt ein, das Jira und GitHub für eine nahtlose Integration verbindet. Das Ziel dieses Projekts besteht darin, die Erstellung von Jira-Tickets direkt aus GitHub-Problemkommentaren zu automatisieren, um Zeit zu sparen und den manuellen Aufwand für Entwickler zu reduzieren.
So gehen wir dieses Projekt an:
Sobald alles eingerichtet ist, fungiert unsere Flask-App als Webhook-API für GitHub. Jedes Mal, wenn ein Entwickler /jira einen Kommentar zu einem GitHub-Problem abgibt, erstellt das Programm automatisch ein entsprechendes Jira-Ticket, das im Jira-Dashboard sichtbar ist. Aufregend, oder? Fangen wir an!
Bevor Sie in das Projekt eintauchen, stellen Sie sicher, dass Sie Folgendes bereit haben:
pip install flask
Wenn diese Voraussetzungen erfüllt sind, sind Sie bereit, dieses Projekt in Gang zu bringen!
Beginnen wir das Projekt mit der Erstellung und Einrichtung einer EC2-Instanz zum Hosten unserer Flask-Anwendung. Befolgen Sie diese Schritte:
Schritt 1: Erstellen Sie die EC2-Instanz
Schritt 2: SSH in die Instanz
Verwenden Sie die heruntergeladene Schlüsselpaardatei, um eine SSH-Verbindung zur Instanz herzustellen:
pip install flask
Schritt 3: Python-Umgebung einrichten
Führen Sie die folgenden Befehle aus, um Python und Flask zu installieren:
ssh -i your-key.pem ubuntu@<instance-public-ip>
Dadurch werden alle notwendigen Abhängigkeiten für das Projekt eingerichtet.
Schritt 4: Erstellen Sie die Flask-Anwendung
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
Fügen Sie der Datei den folgenden Inhalt hinzu:
nano github_jira.py
Bevor wir das Skript github_jira.py ausführen, benötigen wir zwei wichtige Informationen:
Schritte zum Generieren des Atlassian-API-Tokens:
Navigieren Sie zu den Kontoeinstellungen:
Erstellen Sie ein neues API-Token:
Kopieren Sie das API-Token:
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)
Fügen Sie Ihre Atlassian-Domain hinzu:
Ersetzen Sie
Bevor Sie das Skript ausführen, müssen Sie einige wichtige Felder in der Datei github_jira.py aktualisieren, um sicherzustellen, dass die Integration nahtlos mit Ihrem Jira-Konto funktioniert.
1. HTTP-Basisauthentifizierung (E-Mail-Adresse)
Ersetzen Sie den ersten Parameter in HTTPBasicAuth durch die E-Mail-Adresse, die mit Ihrem Jira-Konto verknüpft ist.
API_TOKEN = "<Your-Generated-API-Token>"
2. Projektschlüssel
Ersetzen Sie das Feld „Schlüssel“ unter „Felder“ im Skript:
pip install flask
3. Problemtyp-ID
Ersetzen Sie das Feld „id“ unter „issuetype“ im Skript:
ssh -i your-key.pem ubuntu@<instance-public-ip>
Beispiel für aktualisierte Felder im Skript:
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
Letzter Schritt: Führen Sie das Skript aus
Sobald diese Felder aktualisiert sind, führen Sie das Skript aus mit:
nano github_jira.py
Ihr Skript ist jetzt vollständig konfiguriert und bereit, GitHub-Kommentare in die Jira-Ticketerstellung zu integrieren!
Da unser Skript nun fertig ist, besteht der letzte Schritt darin, einen Webhook in Ihrem GitHub-Repository zu konfigurieren. Dieser Webhook wartet auf bestimmte Ereignisse (in diesem Fall auf die Ausgabe von Kommentaren) und löst die Flask-Anwendung aus.
Schritte zum Hinzufügen des Webhooks:
Neuen Webhook hinzufügen:
pip install flask
Inhaltstyp:
Wählen Sie application/json aus dem Dropdown-Menü aus.
Trigger:
Wählen Sie die Option „Lassen Sie mich einzelne Ereignisse auswählen“.
Aktivieren Sie das Kontrollkästchen nur für Problemkommentare.
Webhook speichern:
Testen der Integration
Beobachten Sie die Magie:
Überprüfen Sie im Jira-Dashboard:
Herzlichen Glückwunsch! ? Sie haben ein praktisches Projekt zur Integration von GitHub und Jira erfolgreich abgeschlossen. Durch die Nutzung einer Flask-Anwendung als Vermittler haben wir den Prozess der Erstellung von Jira-Tickets direkt aus GitHub-Problemkommentaren automatisiert.
In diesem Projekt haben wir Folgendes behandelt:
Diese Integration vereinfacht die Zusammenarbeit zwischen Entwicklern und Projektmanagern, indem sie den manuellen Aufwand reduziert und sicherstellt, dass wichtige Aufgaben nicht untergehen. Es ist eine praktische Demonstration, wie Automatisierung die Produktivität in einem DevOps-Workflow steigern kann.
Bauen Sie gerne auf dieser Grundlage auf, um die Integration weiter anzupassen oder zusätzliche Anwendungsfälle zu erkunden, wie z. B. die Automatisierung des GitHub Pull Request-Trackings in Jira oder die Integration anderer Tools in Ihren Workflow.
Wir hoffen, dass Sie dieses Projekt informativ und ansprechend fanden. ? Für einen informativeren Blog folgen Sie mir auf Hashnode, X(Twitter) und LinkedIn.
Viel Spaß beim Codieren und Automatisieren! ?
Das obige ist der detaillierte Inhalt vonAutomatisieren der JIRA-Ticketerstellung mit einer Flask-API: Ein Leitfaden zur GitHub-Webhook-Integration. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!