使用 Python 和 Flask 從 GitHub 問題評論自動產生 JIRA 票證,從而簡化您的工作流程
歡迎來到 DevOps 的世界!今天,我們正在深入研究一個令人興奮的項目,該項目將 Jira 和 GitHub 連接起來以實現無縫整合。該專案的目標是直接從 GitHub 問題評論自動建立 Jira 票證,從而節省開發人員的時間並減少手動工作。
以下是我們將如何處理這個項目:
一切設定完成後,我們的 Flask 應用程式將充當 GitHub 的 Webhook API。每當開發人員在 GitHub 問題上評論 /jira 時,程式都會自動建立相應的 Jira 票證,該票證在 Jira 儀表板上可見。令人興奮,對吧?讓我們開始吧!
在深入專案之前,請確保您已準備好以下內容:
pip install flask
滿足這些先決條件後,您就可以啟動這個專案了!
讓我們透過建立和設定一個用於託管 Flask 應用程式的 EC2 執行個體來開始專案。請依照以下步驟操作:
第 1 步:建立 EC2 執行個體
第 2 步:透過 SSH 連接到實例
使用下載的金鑰對檔案透過 SSH 連線到執行個體:
pip install flask
第 3 步:設定 Python 環境
執行以下命令來安裝Python和Flask:
ssh -i your-key.pem ubuntu@<instance-public-ip>
這將為專案設定所有必要的依賴項。
第 4 步:建立 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
將以下內容加入文件:
nano github_jira.py
在執行 github_jira.py 腳本之前,我們需要兩個關鍵資訊:
產生 Atlassian API 令牌的步驟:
導覽至帳號設定:
建立新的 API 令牌:
複製 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)
新增您的 Atlassian 網域:
替換 在 url 變數中新增您的 Atlassian 網域。例如,如果您的 Jira 儀表板 URL 是 https://yourworkspace.atlassian.net,請使用 yourworkspace.atlassian.net 作為網域。
在運行腳本之前,您需要更新 github_jira.py 檔案中的一些重要字段,以確保整合與您的 Jira 帳戶無縫協作。
1。 HTTP 基本驗證(電子郵件地址)
將 HTTPBasicAuth 中的第一個參數替換為連結到您的 Jira 帳戶的電子郵件地址。
API_TOKEN = "<Your-Generated-API-Token>"
2。項目金鑰
替換腳本中欄位下的「key」欄位:
pip install flask
3。問題類型 ID
替換腳本中issuetype下的「id」欄位:
ssh -i your-key.pem ubuntu@<instance-public-ip>
腳本中更新欄位的範例:
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
最後一步:執行腳本
更新這些欄位後,使用以下命令執行腳本:
nano github_jira.py
您的腳本現在已完全配置並準備好將 GitHub 評論與 Jira 票證建立整合!
現在我們的腳本已準備就緒,最後一步是在 GitHub 儲存庫中配置 Webhook。該 webhook 將偵聽特定事件(在本例中為發出評論)並觸發 Flask 應用程式。
新增 Webhook 的步驟:
新增新的 Webhook:
pip install flask
內容類型:
從下拉式選單中選擇 application/json。
觸發器:
選擇選項「讓我選擇單一事件」。
僅選取問題評論複選框。
保存 Webhook:
測試整合
觀察魔法:
在 Jira 儀表板上驗證:
恭喜! ?您已經成功完成了整合 GitHub 和 Jira 的實作專案。透過利用 Flask 應用程式作為中介,我們自動化了直接從 GitHub 問題評論創建 Jira 票證的過程。
在這個專案中,我們涵蓋了:
這種整合透過減少手動工作並確保重要任務不會被遺漏,簡化了開發人員和專案經理之間的協作。這是自動化如何提高 DevOps 工作流程中生產力的實際演示。
您可以在此基礎上隨意構建,進一步自訂整合或探索其他用例,例如在 Jira 中自動追蹤 GitHub Pull 請求或將其他工具整合到您的工作流程中。
我們希望您發現這個項目內容豐富且引人入勝。 ?如需了解更多資訊博客,請在 Hashnode、X(Twitter) 和 LinkedIn 上關注我。
快樂編碼和自動化! ?
以上是使用 Flask API 自動建立 JIRA 票證:GitHub Webhook 整合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!