搜尋
首頁後端開發Python教學使用 Flask API 自動建立 JIRA 票證:GitHub Webhook 整合指南

使用 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。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

  • 下載用於 SSH 存取的金鑰對檔案。
  • 在安全群組中開啟連接埠5000來存取flask應用程式。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

第 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 令牌」。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

建立新的 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。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

替換腳本中欄位下的「key」欄位:

pip install flask

3。問題類型 ID

  • 問題類型 ID 是問題類型的唯一識別碼(例如 Bug、故事、任務)。
  • 找出問題 ID:
  • 在 Jira 儀表板中,按一下右上角的三個點,然後選擇管理自訂欄位。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

  • 在「項目設定」中,從左側選單導覽至「問題類型」。
  • 點擊故事或您要使用的問題類型。
  • 查看瀏覽器中的 URL。在 URL 末尾,您會發現一個數值(例如 10005)。這是您的問題類型 ID。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

替換腳本中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。

  • 觸發器:
    選擇選項「讓我選擇單一事件」。
    僅選取問題評論複選框。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

保存 Webhook:

  • 點擊新增 Webhook 按鈕儲存您的設定。

測試整合

  • 在 GitHub 上建立問題:
  • 導覽至儲存庫的「問題」標籤。
  • 按一下“新問題”,提供標題和描述,然後儲存。
  • 對此問題的評論:
  • 開啟已建立的問題並使用 /jira 新增評論。

觀察魔法:

  • webhook 將觸發並向 Flask 伺服器發送 POST 請求。
  • Flask 應用程式將處理請求並使用 Jira API 建立 Jira 票證。

在 Jira 儀表板上驗證:

  • 開啟 Jira 儀表板並導覽至腳本中指定的項目。
  • 您應該會看到與 GitHub 問題評論相對應的新建立的票證。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide


?結論

恭喜! ?您已經成功完成了整合 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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python中的合併列表:選擇正確的方法Python中的合併列表:選擇正確的方法May 14, 2025 am 12:11 AM

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

如何在Python 3中加入兩個列表?如何在Python 3中加入兩個列表?May 14, 2025 am 12:09 AM

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

Python串聯列表字符串Python串聯列表字符串May 14, 2025 am 12:08 AM

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

Python執行,那是什麼?Python執行,那是什麼?May 14, 2025 am 12:06 AM

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

Python:關鍵功能是什麼Python:關鍵功能是什麼May 14, 2025 am 12:02 AM

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

Python:編譯器還是解釋器?Python:編譯器還是解釋器?May 13, 2025 am 12:10 AM

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

python用於循環與循環時:何時使用哪個?python用於循環與循環時:何時使用哪個?May 13, 2025 am 12:07 AM

UseeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.forloopsareIdealForkNownsences,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

Python循環:最常見的錯誤Python循環:最常見的錯誤May 13, 2025 am 12:07 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 英文版

SublimeText3 英文版

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

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

mPDF

mPDF

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

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具