1. 程式人生 > >02 基礎設施/Gitlab - DevOps之路

02 基礎設施/Gitlab - DevOps之路

not AC 我們 bho tla backups tor 選擇 tls

基礎設施/Gitlab - DevOps之路

文章Github地址,歡迎start:https://github.com/li-keli/DevOps-WiKi

源代碼管理器選用Gitlab,新版(2018.4)的Gitlab已經集成了很多的功能了,涵蓋CI/CD、Issues、K8s集群/Docker集群操作等。

在node01機器上安裝部署Gitlab服務,Gitlab作為代碼托管服務,所以需要註意備份、容災等配置。

兩種安裝方式:

  • 官方安裝
  • 國內鏡像安裝

Gitlab官方源訪問太慢,我們選擇國內清華大學鏡像進行安裝,首先配置源:

cat>/etc/yum.repos.d/gitlab-ce.repo<<EOF
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el\$releasever/
gpgcheck=0
enabled=1
EOF && yum makecache && yum install -y gitlab-ce

在此完成Gitlab的安裝,但此時默認的一些配置還需要調整,比如郵件配置,詳細的郵件配置,參照官方文檔介紹配置即可。
配置完成後,可以在Gitlab的Admin管理頁面看到配置結果:

技術分享圖片

在Gitlab協同開發過程中,很多是依賴郵件溝通的,比如Pipelines的執行結果,Issues的處理等等。當然,我們也可以根據提供的Webhook來集成第三方的通信工具,比如釘釘。

自動備份

倉庫需要日常的自動備份,進行容災處理。Gitlab本身已經提供了備份導出的功能了,所以只要配置一個Job就行了。

在Crontab中增加以下語句:

0 5 * * 1 gitlab-rake gitlab:backup:create

以上代碼將在每周的淩晨5店進行全量備份,備份完成後將生產一個.tar的包,默認存放在/var/opt/gitlab/backups
可以通過修改配置文件調整存儲的位置,也可以備份完成後將其自動上傳到專用的NAS備份存儲。

gitlab_rails['backup_path'] = '/var/opt/gitlab/backups' # 修改此處即可

到這裏,Gitlab的基本配置就算完成了,開發人員可以將本地的git庫提交到服務端了。

郵件配置

開啟郵件,編輯配置文件/etc/gitlab/gitlab.rb

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "****"
gitlab_rails['smtp_domain'] = "smtp.example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['gitlab_email_reply_to'] = '[email protected]'
 gitlab_rails['incoming_email_enabled'] = true
 gitlab_rails['incoming_email_address'] = "gitlab-incoming+%{key}@example.com"
 gitlab_rails['incoming_email_email'] = "[email protected]"
 gitlab_rails['incoming_email_password'] = "***"
 gitlab_rails['incoming_email_host'] = "mail.example.com"
 gitlab_rails['incoming_email_port'] = 25
 gitlab_rails['incoming_email_ssl'] = false
 gitlab_rails['incoming_email_start_tls'] = false
 gitlab_rails['incoming_email_mailbox_name'] = "inbox"
 gitlab_rails['incoming_email_idle_timeout'] = 60

配置完成後,執行gitlab-ctl reconfigure && gitlab-ctl restart,重載配置

郵件配置測試

在GitLab服務器上,執行gitlab-rails console進入控制臺,鍵入一下命令進行郵件測試

Notify.test_email('[email protected]', 'Message Subject', 'Message Body').deliver_now

另外由於作者本身知識有限,都是摸索著來的,所以不一定所有的做法都對,或者某些實踐會有更好的方案,望各位讀者不吝指正,有任何疑問,請留 issues

02 基礎設施/Gitlab - DevOps之路