開啟GitLab的郵件通知功能以及一些外觀配置

程序设计实验室發表於2024-07-17

前言

維護GitLab的同事離職了

剛好又有新實習生需要申請賬號

只能我來出手了

其實之前安裝了 GitLab 之後一直還是用得比較粗糙的

屬於是勉強能用的水平,有些配置都還沒改好

這次把郵件功能、域名、外觀啥的配置好了,寫篇文章記錄一下

目錄結構

先來回顧一下 GitLab 的目錄結構

我們的 GitLab 是使用 docker 部署的

gitlab
├── config
├── data
├── logs
├── shell
└── docker-compose.yml

具體的目錄結構也是看具體的配置

本文就以這個目錄結構為例,進行具體的配置

配置郵件功能

修改 config/gitlab.rb 檔案

話說 GitLab 居然是 ruby 寫的?(難怪覺得卡卡的)

編輯郵件配置這一塊

這裡以騰訊企業郵箱為例

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@codelab.com"
gitlab_rails['smtp_password'] = "email-password"
gitlab_rails['smtp_domain'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_ssl'] = true
gitlab_rails['smtp_pool'] = false
gitlab_rails['gitlab_email_from'] = "gitlab@codelab.com"

儲存與載入配置

配置完成儲存一下

進入 GitLab 容器

docker compose exec gitlab bash

執行命令

gitlab-ctl reconfigure
gitlab-ctl restart

搞定

額外郵件配置

對了,還有個額外配置可以改一下,我這裡就只修改了 gitlab_email_from 其他的有需要的同學可以改一下

### Email Settings

# gitlab_rails['gitlab_email_enabled'] = true

##! If your SMTP server does not like the default 'From: gitlab@gitlab.example.com'
##! can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = 'example@example.com'
gitlab_rails['gitlab_email_display_name'] = 'Example'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
gitlab_rails['gitlab_email_subject_suffix'] = ''
gitlab_rails['gitlab_email_smime_enabled'] = false
gitlab_rails['gitlab_email_smime_key_file'] = '/etc/gitlab/ssl/gitlab_smime.key'
gitlab_rails['gitlab_email_smime_cert_file'] = '/etc/gitlab/ssl/gitlab_smime.crt'
gitlab_rails['gitlab_email_smime_ca_certs_file'] = '/etc/gitlab/ssl/gitlab_smime_cas.crt'

傳送測試郵件

我用的方法是進入 ruby console 手動傳送

在 GitLab 例項的前臺頁面沒找到有什麼測試傳送的地方

首先進入 GitLab 容器的 shell

docker compose exec gitlab bash

之後啟動 ruby console

gitlab-rails console

輸入命令發郵件

Notify.test_email('your-email@example.com', 'Test Email', 'This is a test email.').deliver_now

這個方法很好,如果有哪裡配置錯了,也可以從報錯資訊裡直觀的看到

幾個跟郵件有關的功能

  • 登入到你的 GitLab 例項。
  • 進入 Admin Area(管理員區域)。
  • 導航到 Settings > Integrations

這個頁面的中文應該是“例項級整合管理”,我這個版本的 GitLab 有倆跟郵件有關的,分別是:

  • 推送時傳送電子郵件
  • 流水線狀態電子郵件

顧名思義,前面郵箱配置好了就可以啟用這倆

之後滿足條件就可以在指定郵箱接收到通知郵件了

重新使用 swag 來分配域名+https

在之前那篇GitLab安裝的文章裡,我是直接把幾個埠都對映出來

現在改成swag做反代,需要修改一下幾個地方

例如要分配給 GitLab 的域名是 gitlab.dealiaxy.com

首先修改 docker-compose 配置,把容器加入 swag 網路

version: "3"
services:
  gitlab:
    image: gitlab/gitlab-ee:latest
    restart: always
    hostname: gitlab
    container_name: gitlab
    ports:
      - 9443:443
      - 9022:22
    networks:
      - swag
    volumes:
      - /etc/localtime:/etc/localtime
      - ./config:/etc/gitlab
      - ./logs:/var/log/gitlab
      - ./data:/var/opt/gitlab

networks:
  swag:
    name: swag
    external: true

重啟容器

在 swag 裡做 GitLab 容器的 80 埠反代

然後 config/gitlab.rb 配置裡修改一下

external_url "http://gitlab.dealiaxy.com"

這裡使用 HTTP 就好,https 在 swag 那邊會配置,如果這裡寫了 https ,那麼會要在 GitLab 裡提供證書配置,比較麻煩。

然後 ssh host 也得改一下

gitlab_rails['gitlab_ssh_host'] = gitlab.dealiaxy.com

搞定

外觀配置

同樣在 Admin Area 裡,有個“外觀”配置

裡面可以修改logo、登入頁面的圖片、說明(而且還支援markdown)啥的

我稍微改了一下,效果是這樣

然後還有 New Project Guidelines 和 Profile Image Guidelines

分別是建立專案和使用者修改頭像時左側的引導提示

隨便寫一點或者用大模型生成就完事了

這樣配置下來就有模有樣

版本升級

使用 docker-compose pull 命令來拉取最新的映象後

先 down 然後再 up 就可以使更新生效了~

如果只是 restart 就只會重新啟動現有的容器

小結

本文主要還是記錄了郵件配置

還有一些比較零散的配置

接下來還要繼續完善一下 CICD 流程

到時搞定之後再寫文章記錄

相關文章