Perkemas aliran kerja anda dengan menjana tiket JIRA secara automatik daripada ulasan isu GitHub menggunakan Python dan Flask
Selamat datang ke dunia DevOps! Hari ini, kami menyelami projek menarik yang menghubungkan Jira dan GitHub untuk penyepaduan yang lancar. Matlamat projek ini adalah untuk mengautomasikan penciptaan tiket Jira terus daripada ulasan isu GitHub, menjimatkan masa dan mengurangkan usaha manual untuk pembangun.
Begini cara kami menangani projek ini:
Setelah semuanya disediakan, apl Flask kami akan bertindak sebagai API webhook untuk GitHub. Pada bila-bila masa pembangun mengulas /jira pada isu GitHub, program akan membuat tiket Jira yang sepadan secara automatik, boleh dilihat pada papan pemuka Jira. Menarik kan? Mari mulakan!
Sebelum terjun ke dalam projek, pastikan anda menyediakan yang berikut:
pip install flask
Dengan adanya prasyarat ini, anda sudah bersedia untuk memulakan projek ini!
Mari mulakan projek dengan mencipta dan menyediakan contoh EC2 untuk mengehos aplikasi Flask kami. Ikuti langkah ini:
Langkah 1: Buat Instance EC2
Langkah 2: SSH ke dalam Instance
Gunakan fail pasangan kunci yang dimuat turun ke SSH ke dalam contoh:
pip install flask
Langkah 3: Sediakan Persekitaran Python
Jalankan arahan berikut untuk memasang Python dan Flask:
ssh -i your-key.pem ubuntu@<instance-public-ip>
Ini akan menyediakan semua kebergantungan yang diperlukan untuk projek.
Langkah 4: Cipta Aplikasi Kelalang
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
Tambahkan kandungan berikut pada fail:
nano github_jira.py
Sebelum menjalankan skrip github_jira.py, kami memerlukan dua maklumat penting:
Langkah untuk Menjana Token API Atlassian:
Navigasi ke Tetapan Akaun:
Buat Token API Baharu:
Salin Token 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)
Tambah Domain Atlassian Anda:
Gantikan
Sebelum menjalankan skrip, anda perlu mengemas kini beberapa medan penting dalam fail github_jira.py untuk memastikan penyepaduan berfungsi dengan lancar dengan akaun Jira anda.
1. Pengesahan Asas HTTP (Alamat E-mel)
Gantikan parameter pertama dalam HTTPBasicAuth dengan alamat e-mel yang dipautkan ke akaun Jira anda.
API_TOKEN = "<Your-Generated-API-Token>"
2. Kunci Projek
Ganti medan "kunci" di bawah medan dalam skrip:
pip install flask
3. ID Jenis Isu
Ganti medan "id" di bawah jenis isu dalam skrip:
ssh -i your-key.pem ubuntu@<instance-public-ip>
Contoh Medan Dikemas Kini dalam Skrip:
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
Langkah Terakhir: Jalankan Skrip
Setelah medan ini dikemas kini, jalankan skrip menggunakan:
nano github_jira.py
Skrip anda kini dikonfigurasikan sepenuhnya dan bersedia untuk menyepadukan ulasan GitHub dengan penciptaan tiket Jira!
Sekarang skrip kami sudah sedia, langkah terakhir ialah mengkonfigurasi webhook dalam repositori GitHub anda. Webhook ini akan mendengar acara tertentu (dalam kes ini, mengeluarkan ulasan) dan mencetuskan aplikasi Flask.
Langkah untuk Menambah Webhook:
Tambah Webhook Baharu:
pip install flask
Jenis Kandungan:
Pilih application/json daripada menu lungsur turun.
Pencetus:
Pilih pilihan "Izinkan saya memilih acara individu".
Tandai kotak untuk Keluarkan ulasan sahaja.
Simpan Webhook:
Menguji Penyepaduan
Perhatikan Sihir:
Sahkan pada Papan Pemuka Jira:
Tahniah! ? Anda telah berjaya menyelesaikan projek praktikal yang menyepadukan GitHub dan Jira. Dengan memanfaatkan aplikasi Flask sebagai perantara, kami mengautomasikan proses mencipta tiket Jira terus daripada ulasan isu GitHub.
Dalam projek ini, kami membincangkan:
Penyepaduan ini memudahkan kerjasama antara pembangun dan pengurus projek dengan mengurangkan usaha manual dan memastikan tugas penting tidak tergelincir. Ini ialah demonstrasi praktikal tentang cara automasi boleh meningkatkan produktiviti dalam aliran kerja DevOps.
Jangan ragu untuk membina asas ini untuk menyesuaikan penyepaduan dengan lebih lanjut atau meneroka kes penggunaan tambahan, seperti mengautomasikan penjejakan Permintaan Tarik GitHub dalam Jira atau menyepadukan alatan lain ke dalam aliran kerja anda.
Kami harap anda mendapati projek ini bermaklumat dan menarik. ? Untuk blog yang lebih bermaklumat, Ikuti saya di Hashnode, X(Twitter) dan LinkedIn.
Selamat pengekodan dan mengautomasikan! ?
Atas ialah kandungan terperinci Mengautomasikan Penciptaan Tiket JIRA dengan Flask API: Panduan Penyepaduan GitHub Webhook. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!