使用 Python 和 Flask 從 GitHub 問題評論自動產生 JIRA 票證,從而簡化您的工作流程
?介紹
歡迎來到 DevOps 的世界!今天,我們正在深入研究一個令人興奮的項目,該項目將 Jira 和 GitHub 連接起來以實現無縫整合。該專案的目標是直接從 GitHub 問題評論自動建立 Jira 票證,從而節省開發人員的時間並減少手動工作。
以下是我們將如何處理這個項目:
- 設定 Flask API:我們將啟動一個基於 Ubuntu 的 t2.micro EC2 執行個體來託管我們的 Flask 應用程式。
- 設定 Jira:我們將在 Jira 上建立專案並使用其 API 來建立票證。
- 整合 API:透過向我們的 Flask 應用程式提供 Jira API 令牌,我們將使其能夠與 Jira 互動。
一切設定完成後,我們的 Flask 應用程式將充當 GitHub 的 Webhook API。每當開發人員在 GitHub 問題上評論 /jira 時,程式都會自動建立相應的 Jira 票證,該票證在 Jira 儀表板上可見。令人興奮,對吧?讓我們開始吧!
?先決條件
在深入專案之前,請確保您已準備好以下內容:
- GitHub 和 Jira 帳戶:您需要兩個平台上的活動帳戶才能設定整合。
- 已安裝 Flask:確保在您的 Python 環境中設定 Flask。如果沒有,您可以使用以下命令安裝它:
pip install flask
- 對 EC2 和 Flask 的基本了解:熟悉設定 EC2 執行個體和建立簡單的 Flask 應用程式將幫助您順利進行操作。
滿足這些先決條件後,您就可以啟動這個專案了!
?設定 EC2 實例和 Flask 應用程式
讓我們透過建立和設定一個用於託管 Flask 應用程式的 EC2 執行個體來開始專案。請依照以下步驟操作:
第 1 步:建立 EC2 執行個體
- 導覽至 AWS EC2 儀表板並建立一個新的基於 Ubuntu 的 t2.micro 執行個體。
- 將實例命名為 jira-github-integration。
- 下載用於 SSH 存取的金鑰對檔案。
- 在安全群組中開啟連接埠5000來存取flask應用程式。
第 2 步:透過 SSH 連接到實例
使用下載的金鑰對檔案透過 SSH 連線到執行個體:
pip install flask
第 3 步:設定 Python 環境
執行以下命令來安裝Python和Flask:
ssh -i your-key.pem ubuntu@<instance-public-ip> </instance-public-ip>
這將為專案設定所有必要的依賴項。
第 4 步:建立 Flask 應用程式
- 建立一個名為 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
將以下內容加入文件:
nano github_jira.py
?產生 Atlassian API 令牌
在執行 github_jira.py 腳本之前,我們需要兩個關鍵資訊:
- Atlassian API 令牌
- 您的 Atlassian 網域
產生 Atlassian API 令牌的步驟:
- 登入您的 Atlassian 帳號:
- 造訪 Atlassian 並使用您的憑證登入。
導覽至帳號設定:
- 點擊右上角的個人資料圖片或頭像。
- 從下拉式選單中選擇帳戶設定。
- 轉到安全性選項卡:
- 在帳戶設定頁面中,按一下「安全性」標籤。
- 在 API 令牌部分下,按一下「建立 API 令牌」。
建立新的 API 令牌:
- 提供描述(例如,GitHub Jira 整合)並根據提示設定令牌的到期日期。
- 點擊“建立”,將產生您的 API 令牌。
複製 API 令牌:
- 點選「複製」按鈕複製令牌。
- 將令牌貼到 github_jira.py 腳本中的 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) </your_issue_id></your_key></your_email_addresss_connected_to_the_account></your_api_token></your-atlassian-domain>
新增您的 Atlassian 網域:
替換 在 url 變數中新增您的 Atlassian 網域。例如,如果您的 Jira 儀表板 URL 是 https://yourworkspace.atlassian.net,請使用 yourworkspace.atlassian.net 作為網域。
?在 github_jira.py 腳本中配置必填字段
在運行腳本之前,您需要更新 github_jira.py 檔案中的一些重要字段,以確保整合與您的 Jira 帳戶無縫協作。
1。 HTTP 基本驗證(電子郵件地址)
將 HTTPBasicAuth 中的第一個參數替換為連結到您的 Jira 帳戶的電子郵件地址。
API_TOKEN = "<your-generated-api-token>" </your-generated-api-token>
2。項目金鑰
- 項目密鑰唯一標識將在其中建立票證的 Jira 項目。
- 要找到您的專案金鑰:
- 前往 Jira 儀表板。
- 在「項目」標籤下,找到將建立票證的項目。
- 項目金鑰顯示在簡單的括號 (()) 中。例如,在專案Project ABC (SCRUM)中,關鍵是SCRUM。
替換腳本中欄位下的「key」欄位:
pip install flask
3。問題類型 ID
- 問題類型 ID 是問題類型的唯一識別碼(例如 Bug、故事、任務)。
- 找出問題 ID:
- 在 Jira 儀表板中,按一下右上角的三個點,然後選擇管理自訂欄位。
- 在「項目設定」中,從左側選單導覽至「問題類型」。
- 點擊故事或您要使用的問題類型。
- 查看瀏覽器中的 URL。在 URL 末尾,您會發現一個數值(例如 10005)。這是您的問題類型 ID。
替換腳本中issuetype下的「id」欄位:
ssh -i your-key.pem ubuntu@<instance-public-ip> </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 票證建立整合!
?新增Webhook以完成集成
現在我們的腳本已準備就緒,最後一步是在 GitHub 儲存庫中配置 Webhook。該 webhook 將偵聽特定事件(在本例中為發出評論)並觸發 Flask 應用程式。
新增 Webhook 的步驟:
- 導覽至 GitHub 儲存庫:
- 開啟要測試該專案的 GitHub 儲存庫。 存取儲存庫設定:
- 點選儲存庫選單中的「設定」標籤。
- 在左側導覽列中,選擇「程式碼和自動化」部分下的 Webhooks。
新增新的 Webhook:
- 點選「新增 Webhook」按鈕。
- 設定 Webhook:
- 有效負載 URL: 輸入 Flask 應用程式的 URL。這應包括您的 EC2 執行個體的公共 DNS 和 Flask 終端節點的路由:
pip install flask
內容類型:
從下拉式選單中選擇 application/json。觸發器:
選擇選項「讓我選擇單一事件」。
僅選取問題評論複選框。
保存 Webhook:
- 點擊新增 Webhook 按鈕儲存您的設定。
測試整合
- 在 GitHub 上建立問題:
- 導覽至儲存庫的「問題」標籤。
- 按一下“新問題”,提供標題和描述,然後儲存。
- 對此問題的評論:
- 開啟已建立的問題並使用 /jira 新增評論。
觀察魔法:
- webhook 將觸發並向 Flask 伺服器發送 POST 請求。
- Flask 應用程式將處理請求並使用 Jira API 建立 Jira 票證。
在 Jira 儀表板上驗證:
- 開啟 Jira 儀表板並導覽至腳本中指定的項目。
- 您應該會看到與 GitHub 問題評論相對應的新建立的票證。
?結論
恭喜! ?您已經成功完成了整合 GitHub 和 Jira 的實作專案。透過利用 Flask 應用程式作為中介,我們自動化了直接從 GitHub 問題評論創建 Jira 票證的過程。
在這個專案中,我們涵蓋了:
- 設定 EC2 執行個體來託管 Flask 應用程式。
- 配置 Flask 應用程式以與 Jira API 互動。
- 建立並新增 GitHub Webhook 以觸發工作流程。
- 從 GitHub 評論中觀察 Jira 票證的無縫創建。
這種整合透過減少手動工作並確保重要任務不會被遺漏,簡化了開發人員和專案經理之間的協作。這是自動化如何提高 DevOps 工作流程中生產力的實際演示。
您可以在此基礎上隨意構建,進一步自訂整合或探索其他用例,例如在 Jira 中自動追蹤 GitHub Pull 請求或將其他工具整合到您的工作流程中。
我們希望您發現這個項目內容豐富且引人入勝。 ?如需了解更多資訊博客,請在 Hashnode、X(Twitter) 和 LinkedIn 上關注我。
快樂編碼和自動化! ?
以上是使用 Flask API 自動建立 JIRA 票證:GitHub Webhook 整合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。

pythonexecutionistheprocessoftransformingpypythoncodeintoExecutablestructions.1)InternterPreterReadSthecode,ConvertingTingitIntObyTecode,whepythonvirtualmachine(pvm)theglobalinterpreterpreterpreterpreterlock(gil)the thepythonvirtualmachine(pvm)

Python的關鍵特性包括:1.語法簡潔易懂,適合初學者;2.動態類型系統,提高開發速度;3.豐富的標準庫,支持多種任務;4.強大的社區和生態系統,提供廣泛支持;5.解釋性,適合腳本和快速原型開發;6.多範式支持,適用於各種編程風格。

Python是解釋型語言,但也包含編譯過程。 1)Python代碼先編譯成字節碼。 2)字節碼由Python虛擬機解釋執行。 3)這種混合機制使Python既靈活又高效,但執行速度不如完全編譯型語言。

UseeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.forloopsareIdealForkNownsences,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐個偏置,零indexingissues,andnestedloopineflinefficiencies


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版
視覺化網頁開發工具