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

使用 Flask API 自動建立 JIRA 票證:GitHub Webhook 整合指南

Patricia Arquette
發布: 2024-12-30 09:00:17
原創
998 人瀏覽過

使用 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>
登入後複製
登入後複製

這將為專案設定所有必要的依賴項。

第 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)
登入後複製

新增您的 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>"
登入後複製

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>
登入後複製
登入後複製

腳本中更新欄位的範例:

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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板