![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZmRmY2kDO2ImNzcDNwgjNycjM4MjNlhjM1UjNmNjNi9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
背景
- 伺服器申請下來了
- 項目越來越多,目前的倉庫管理功能有點弱,完全靠人來管理,包括建立倉庫、管理ssh key等
- 使用Gitlab可以更友善的檢視倉庫相關資訊、人員相關資訊。比如每個人的代碼送出量、日志
Gitlab搭建
安裝docker
- 安裝依賴
yum install -y yum-utils
device-mapper-persistent-data
lvm2
- 添加國内源
yum-config-manager
--add-repo
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
- 使用腳本自動安裝docker-ce
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
- 啟動docker
systemctl enable docker
systemctl start docker
安裝Gitlab
- 下載下傳鏡像
docker pull gitlab/gitlab-ce
- 啟動Gitlab
docker run --detach
--publish 443:443 --publish 80:80 --publish 2222:22 # 本地端口的映射
--name gitlab # gitlab-ce 的鏡像運作成為一個容器,這裡是對容器的命名
--restart always # 設定重新開機方式,always 代表一直開啟,伺服器開機後也會自動開啟的
--volume /srv/gitlab/config:/etc/gitlab # 将 gitlab 的配置檔案目錄映射到 /srv/gitlab/config 目錄中
--volume /srv/gitlab/logs:/var/log/gitlab # 将 gitlab 的log檔案目錄映射到 /srv/gitlab/logs 目錄中
--volume /srv/gitlab/data:/var/opt/gitlab # 将 gitlab 的資料檔案目錄映射到 /srv/gitlab/data 目錄中
gitlab/gitlab-ce:lates # 需要運作的鏡像
這樣Gitlab就啟動了。
這裡其實有個坑,在centos7下,22端口被占用了,是以第三個端口映射不能使用
22
端口,使用其他就可以了。
第三個端口是 ssh 的映射端口,剛開始使用的
22
,導緻不能通過ssh協定 clone 項目。
配置郵件伺服器
想要發郵件,就必須配置郵件伺服器。我配置的是QQ郵箱。
打開
/srv/gitlab/config/gitlab.rb
- 修改配置
### Email Settings
gitlab_rails['smtp_enable'] = true # 開啟 SMTP 功能
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465 # 端口不可以選擇587,測試過會發送郵件失敗
gitlab_rails['smtp_user_name'] = "********@qq.com" # * 你的郵箱賬号,也可以是ge**[email protected]等
gitlab_rails['smtp_password'] = "****" # * 授權碼,不是密碼
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '********@qq.com' # * 發件人資訊,必須跟‘smtp_user_name’保持一緻,否則報錯
gitlab_rails['smtp_domain'] = "qq.com" # 修改并不影響 可修改為exmail.qq.com/james.com 經測試完全不影響,删除也不影響,并且發送的郵件都是一樣的。
- 重新加載配置
docker exec gitlab gitlab-ctl reconfigure
- 重新開機Gitlab
docker container gitlab restart
配置Git倉庫通路路徑
這一步我們要把位址配置成伺服器IP。
打開
/srv/gitlab/config/gitlab.rb
- 修改配置
external_url 'http://xxx.xxx.xxx.xx'
- 重新加載配置
docker exec gitlab gitlab-ctl reconfigure
- 重新開機Gitlab
docker container gitlab restart
遷移倉庫
登入Gitlab
第一次登入會要求你輸入密碼,使用者名為root(超級管理者)
建立空倉庫
我們建立一個空倉庫,用來作為遷移倉庫。
拉取裸倉庫到本地
git clone --bare [email protected]:/home/git/test.git
以鏡像方式push代碼到Gitlab
cd test.git
git push --mirror ssh://[email protected]:2222/root/test.git
至此,我們就完成了git倉庫遷移到Gitlab的工作了。
後續
Gitlab提供CI/CD功能,就順便看了一下,需要搭建Gitlab-Runner,執行pipline。因為目前在用jenkins,留給以後再探索。
使用Gitlab的目的主要有兩個原因:
- 項目越來越多,使用工具可以友善管理
- Gitlab提供了統計資料的功能,比如使用者的送出地圖
參考資料
- 使用Docker搭建Gitlab
- git倉庫完整遷移
- 通過Docker搭建自用的Gitlab服務
- Docker Gitlab SSH 坑
- Git配置ssh key後,還是需要輸入密碼,git clone http 可以
- gitlab搭建與配置說明