如何在自行架設的 Gitlab 中導入 Service Desk 服務

Service Desk 服務功能是使用 Email 作為溝通的方式來建立、回覆 Gitlab 裡的 Issues。

如果想在自行架設的 Gitlab 中導入 Service Desk 服務,你會需要設定 Gitlab 可以讀取指定的 Email 信箱和透過指定的 Email 信箱寄信,你可以透過架設 Posfix、使用 Gmail、使用 Microsoft Exchange Server、使用 Microsoft Office 365、Microsoft Graph...等方式來達成這件事情,當中最容易的方式是開設一個 Gmail 信箱。

設定 Gmail 作為信件處理服務

申請 Gmail 信箱完成後,先前往設定開啟 IMAP 服務。為了安全考量,請開啟二階段驗證取得應用程式密碼,後前往修改你的 /etc/gitlab/gitlab.rb 設定檔案加入以下內容:

gitlab_rails['incoming_email_enabled'] = true

# 這邊的 {key} 是未來會隨著專案名稱改變的任意字串,請勿修改
gitlab_rails['incoming_email_address'] = "gitlab-incoming+%{key}@gmail.com"

# 你申請的 Gmail 帳號
gitlab_rails['incoming_email_email'] = "[email protected]"

# Email account password
gitlab_rails['incoming_email_password'] = "[應用程式密碼]"

# IMAP server host
gitlab_rails['incoming_email_host'] = "imap.gmail.com"
# IMAP server port
gitlab_rails['incoming_email_port'] = 993
# Whether the IMAP server uses SSL
gitlab_rails['incoming_email_ssl'] = true
# Whether the IMAP server uses StartTLS
gitlab_rails['incoming_email_start_tls'] = false

gitlab_rails['incoming_email_mailbox_name'] = "inbox"
gitlab_rails['incoming_email_idle_timeout'] = 60
gitlab_rails['incoming_email_delete_after_delivery'] = true
gitlab_rails['incoming_email_expunge_deleted'] = true

接下來重新讀取設定、重啟 Gitlab 後進行 incoming email 的驗證

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:incoming_email:check

開啟 Service Desk 服務

Service Desk 服務需要每個專案各自設定,可以前往 General > Service Desk 展開區塊後將「Activate Service Desk」啟用。在啟用該選項後你會取得一個信箱位置,例如「[email protected]」。你可以嘗試將信件寄送到這個信箱位置,當信箱收到信件的同時,Gitlab 也會自動建立一個相對應的 Issue。每當你回覆 Issue 時,Gitlab 也會透過你設定的信箱直接將你的回覆寄送給當時寄送 Issue 信件的人。

參考資料