Gitlab 跨版本升級


介紹

由於想使用 gitlab 新版本添加的一些特性,最近項目不是很忙,故開始了作死的 gitlab 升級之旅。。。真的,沒事還是不建議升級這東西!很久沒弄 gitlab 很多東西都忘了,過程中各種踩坑,故寫一篇文章記錄下升級、安裝及配置的過程,希望對各位看官有點幫助。

開始

一般升級某個軟件直接去 官網 看更新教程即可,而其官網提示 CentOS 7 升級 gitlab 也很簡單,就兩步:

# 備份
sudo gitlab-rake gitlab:backup:create STRATEGY=copy
# 下載&安裝更新
sudo yum install -y gitlab-ce

一時興起,執行完第二步后發現,升級失敗,原因是我對 gitlab 版本過老(11.11.3),不能直接升級到 13.x 的版本,需要一個版本一個版本升,參考別人的踩坑經驗,選擇了
11.11.3 -> 12.0.12 -> 12.10.14 -> 13.0.10 -> 13.4.2 -> 13.9.1 這個版本升級路線
開始嘗試升級時,通過 curlyum 的方式在服務器端進行 gitlab-ce 下載,然而經常會因為網絡問題中斷掉,換了國內鏡像源(清華源、阿里雲)依舊偶爾中斷,第一次更新,通過 yum 進行下載,到百分之九十多的時候進度條卡住了,繼續執行安裝操作,后面啟動時報錯(“STDOUT: WARNING: This version of GitLab depends on gitlab-shell 9.3.0, but you're running 9.1.0. Please update gitlab-shell.”),找了一晚上的處理方法,各種嘗試無果,估計是下載不完全強行安裝造成的某些包不對應,或者是之前手動改了一些配置文件導致的,后另起服務器重新安裝備份文件的對應版本 11.11.3 重新進行更新操作

系統&環境

  • CentOS 7
  • Gitlab-CE 11.11.3 -> 12.0.12 -> 12.10.14 -> 13.0.10 -> 13.4.2 -> 13.9.1

下載&安裝

由於國內原因,如果你想通過修改鏡像源來下載安裝 gitlab-ce 的安裝包,可以查看文末的“參考”鏈接,我不推薦這種做法,因為國內鏡像源不穩定,如清華源下載到500M左右就很不穩定,且有些同步不及時。我的做法是,在電腦本地開 VPN 去 官網下載 完所有文件后,再上傳到服務器上進行安裝

# 上傳本地文件到指定服務器
scp /path/filename username@servername:/path

上傳到服務器之后,需要先備份且停掉 gitlab 再進行安裝

# 創建備份
gitlab-rake gitlab:backup:create
# 停止 gitlab 各項服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl stop nginx
# 安裝指定版本 gitlab
rpm -Uvh gitlab-ce-12.0.12-ce.0.el7.x86_64.rpm
# 刷新配置
gitlab-ctl reconfigure
# 重啟 gitlab
gitlab-ctl restart

重復以上幾條命令,即可升級到最新版本,如果過程中有紅字提示“Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data..."可以暫時不管,升級到最新版本后再處理,報錯原因是 gitlab.rb 和 gitlab-secrets.json 兩個文件包含敏感信息。未被備份到備份文件中。需要手動備份,兩文件路徑分別為 /etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json,如果需要使用舊版本的配置,將老版本的 gitlab.rb 文件替換新版本的 gitlab.rb 即可,gitlab-secrets.json 文件同理,不過這個是記錄了安全相關的,比如你訪問 Runners 頁面提示 500 報錯,就需要將舊版本替換掉新版

自動&定時備份

修改 /etc/gitlab/gitlab.rb 文件

# 設置備份存儲位置
gitlab_rails['backup_path'] = "/mnt/udisk/gitlab/backups"
# 備份最近七天的數據,即 7*24*60*60 秒
gitlab_rails['backup_keep_time'] = 604800

保存后,刷新配置文件

gitlab-ctl reconfigure

編輯定時任務

crontab -e

加入以下內容后保存(每天中午 12 點和傍晚 18 點自動執行備份操作)

0 12 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
0 18 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

保存后我們需要重新啟動定時器,執行如下語句

# 重啟定時任務
systemctl restart crond.service
# 重裝定時任務
systemctl reload crond.service
# 查看定時任務是否開啟(可選)
systemctl is-enabled crond.service
# 查看所有用戶下的定時任務(可選)
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}

至此,自動定時備份完成

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM