當前位置:
首頁 > 知識 > 使用Python和Gitlab創建一個票證系統

使用Python和Gitlab創建一個票證系統

當你與一個正在成長的團隊一起工作,並且你負責所有與IT相關的請求(購買硬體、創建帳戶等)時,有時僅僅使用電子郵件或直接發送消息來處理這些請求就會變得難以追蹤。當你忙著做其他的一些事情時,你可能會忘記其他人發送給你的消息,或者你可能會收到許多請求,其中一些請求你可能會忽略。這時候通常就是你考慮一個票證系統的最佳時機了。

(此處已添加圈子卡片,請到今日頭條客戶端查看)

票證(ticketing)系統是一個將你的所有客戶和/或同事的請求集中起來的系統,它可以幫助你跟蹤哪些請求已經被處理,哪些需要更多的時間,等等。通常,還有一種方法可以讓你和提出請求的人討論應該做什麼的細節。目前有幾個很好的票證系統供應商,例如Zendesk和Freshdesk。但是,如果你想避免必須安裝這些額外的系統之一,並使用您更熟悉的一些東西,該怎麼辦呢?在本文中,我們將使用Gitlab Service Desk、Gitlab REST API和Python來構建一個簡單的票證系統。

警告:本文假設你有一個隨時可用的Gitlab Premium實例。

設置一個新的Gitlab存儲庫

第一步是為你的票證系統設置一個新的空白Gitlab存儲庫。我將我的存儲庫命名為ticketing,但是你可以給它取任何名字。

使用Python和Gitlab創建一個票證系統

打開今日頭條,查看更多圖片

與其他任何存儲庫一樣,你可以給它一個描述,選擇將其公開、內部或私有,你還可以使用一個README文件初始化它。為了便於演示,我將保留默認設置。

啟用Service Des

在本教程中,我們將使用的最重要的特性是Gitlab Service Desk。Service Desk是Gitlab Premium v9.1中發布的一個功能。它旨在簡化開發團隊和客戶之間的交互。引用官方發布中的公告,

你的客戶或任何與項目中人員有聯繫的人都可以將bug、特性請求或任何其他一般反饋直接發送到你的GitLab項目中。反過來,任何GitLab用戶都可以直接從項目中進行響應。

我們可以充分利用這個特性,並使用它通過電子郵件將支持票(support ticket)直接發送到我們的新存儲庫中。

要啟用Service Desk,你只需轉到存儲庫的常規設置並向下滾動到Service Desk,。點擊Expand (展開)並啟用它(默認情況下它可能已經啟用了)。你將看到Gitlab自動為要發送的支持請求生成了一個電子郵件地址。

使用Python和Gitlab創建一個票證系統

現在一切都設置好了,我們可以開始編寫我們自己的票證系統腳本了!

一個用Python編寫的票證系統

我們將使用Gitlab REST API(點擊這裡查看文檔https://docs.gitlab.com/ee/api/ )與我們的票證系統存儲庫以及Python requests庫進行交互。要安裝這個庫,你只需按照官方的安裝說明即可。下面的步驟都是用Python 3.7.3和requests 2.22.0進行測試的。

讓我們創建一個Python腳本,並將其命名為gitlab-ticket.py。首先要做的是導入 requests庫的內容。

使用Python和Gitlab創建一個票證系統

大多數API功能都需要某種形式的身份驗證。你可以使用OAUTH令牌,也可以使用個人訪問令牌。我選擇了後者。Gitlab文檔中提供了創建個人訪問令牌的說明。

Gitlab API請求的一般形式如下:

使用Python和Gitlab創建一個票證系統

你可以在你的項目存儲庫的主頁上獲取項目ID。

使用Python和Gitlab創建一個票證系統

為了使代碼更具可讀性,讓我們在Python腳本中添加以下幾行代碼:

使用Python和Gitlab創建一個票證系統

確保分別用你的個人訪問令牌和項目的ID替換privateToken和projectId。

為了測試我們的設置,我們來將以下內容添加

使用Python和Gitlab創建一個票證系統

到腳本中。這段代碼會嘗試從Gitlab檢索項目屬性並以JSON格式列印它們。你可以通過簡單地執行來運行這個腳本:

使用Python和Gitlab創建一個票證系統

你應該會看到一串JSON列印到屏幕上。如果沒有,請確保你的個人訪問令牌和項目ID是正確的。你現在可以安全地刪除我們添加到Python腳本中的最後一行了。接下來,我們將為我們的票證系統設計一些功能。

設計一些功能

此時,一切都如預期的那樣開始運行,你應該能夠使用Gitlab API向你的存儲庫發出請求。我們準備開始編寫我們的票證系統腳本了。

為了簡單起見,我們將只在票務系統中加入幾個功能。支持票將在存儲庫的問題中進行管理,並根據我們將要定義的類別進行標記。標籤的分配應該是自動化的,並將基於一個常見的問題標題前綴。腳本應該負責添加缺失的標籤。

實現

現在我們已經知道了我們的目標是什麼,讓我們深入研究代碼。

首先,我們定義一些票的類別。我們將使用一個Python字典來保存數據。我們添加兩個類別,將其命名為Hardware 和Gitlab Account ,前者用於與硬體相關的東西,後者用於Gitlab帳戶創建請求。

使用Python和Gitlab創建一個票證系統

每個類別都有一個唯一的標識符,以及一個關聯的標籤(帶有名稱和顏色)。

接下來,我們必須將這些標籤添加到存儲庫中。為此,我們使用Gitlab API提供的labels請求。如果沒有發生錯誤,請求將返回狀態碼201。如果一個標籤已經存在,我們只需忽略錯誤並繼續執行。

使用Python和Gitlab創建一個票證系統

然後,我們從存儲庫中檢索所有問題的列表。這將允許我們對它們進行迭代,並根據每個問題的標題自動為其分配正確的標籤。

使用Python和Gitlab創建一個票證系統

如果存儲庫中只有一個問題,resp.json() 將會返回一個字典,而如果有多個問題的化,它將會返回一個字典列表。我們來將其標準化,並始終使用一個列表。

使用Python和Gitlab創建一個票證系統

接下來,我們遍歷所有的問題並搜索Service Desk發布的問題。然後檢查是否存在預定義的標題頭部。一個典型的服務票標題如下所示:

使用Python和Gitlab創建一個票證系統

我們試圖找到與方括弧內的類別ID之一對應的這個標題的子字元串,並將相應的標籤附加給它。

使用Python和Gitlab創建一個票證系統

就是這樣!我們現在已經將一個簡單的票務系統完全集成到Gitlab了。當你每次運行這個腳本時,所有問題都將自動使用正確的標籤進行更新。我們來測試一下。

進行測試

我們來向Gitlab為我們的存儲庫生成的地址寫一封電子郵件。我將請求一個新的屏幕:

使用Python和Gitlab創建一個票證系統

注意,我在電子郵件的主題中使用了方括弧內的一個類別ID。這非常重要,因為它將允許我們的腳本為生成的Gitlab問題提供正確的標籤。

這個新的問題現在就可以在存儲庫中看到了。

使用Python和Gitlab創建一個票證系統

我們可以像對待其他問題一樣對它進行響應。應答將自動轉發到發出請求者的郵箱。

使用Python和Gitlab創建一個票證系統

最後的想法

正如我們在這篇文章中看到的,使用Python和Gitlab Service Desk設置一個簡單的票證系統是很容易的。要完全自動化這個過程,你只需要將我們編寫的Python腳本添加到CI任務中,定期觸發它來更新所有新創建的問題。


英文原文:https://kayjukh.github.io/programming/using-gitlab-and-python-to-create-a-ticketing-system/

譯者:Nothing

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

技術簡歷最重要的部分:經驗
用 Poetry 創建並發布 Python 包

TAG:Python部落 |