# GitLab升級步驟 ## 升級方法 > GitLab不支援跳板升級,需按照[官方升級途徑](https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?distro=centos&edition=ce)進行升級。 ## 升級範圍 >OS:RHEL 7.6 -> RHEL 8.6 >GitLab:12.5.5 -> 15.10.8 ### 升級途徑:  [What's news since](https://gitlab-com.gitlab.io/cs-tools/gitlab-cs-tools/what-is-new-since/?order=-1&tab=features&minVersion=12_05&maxVersion=15_10) 12.5.5 -> 15.10.8 ### 下載安裝檔: 不同版本&平台連結的路徑不一樣,可參考[官網連結](https://packages.gitlab.com/gitlab) [RHEL7 for 12.0.14](https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm/download.rpm) [RHEL8 for 12.0.14](https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-12.10.14-ce.0.el8.x86_64.rpm/download.rpm) ## 升級流程 ~~~mermaid graph LR; RHEL7.6-->Git備份; Git備份-->GitLab升級12.10.14; GitLab升級12.10.14-->Git備份; RHEL8.6--->安裝Git12.10.14; 安裝Git12.10.14--->匯入RHEL7.6資料; 匯入RHEL7.6資料--->升級至13.X; 升級至13.X--->升級至14.X; 升級至14.X--->升級至15.X; ~~~ ## 升級步驟 ## 步驟一:升級 gitlab版本@RHEL7.6 > 升級原RHEL7.6上之gitlab版本to12.10.14 ### 1.備份gitlab資料 @RHEL7.6 ~~~bash gitlab-rake gitlab:backup:create #備份檔案存放在/var/opt/gitlab/backups ~~~  ### 2.升級gitlab至12.10.14 @RHEL7.6 #### 2.1 保留git版本資訊 ~~~bash gitlab-rake gitlab:env:info | tee -a gitlab-ce-12.10.14_before.txt ~~~ #### 2.2 升級至12.10.14 ~~~bash yum localinstall gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm | tee gitlab-ce-12.10.14_install.txt ~~~ #### 2.3 驗證gitlab #### 2.3.1 gitlab健康狀態 ~~~bash #確認gitlab各個元件狀態 gitlab-rake gitlab:check | tee -a gitlab-ce-12.10.14_check.txt ~~~ ##### 2.3.2 確認DB是否轉移 ~~~bash #status應該為[ up ] gitlab-rake db:migrate:status | tee -a gitlab-ce-12.10.14_check.txt ~~~ ##### 2.3.3 gitlab元件狀態 ~~~bash #確認所有服務皆為run gitlab-ctl status | tee -a gitlab-ce-12.10.14_check.txt ~~~ ##### 2.3.4 確認版本資訊 ~~~bash gitlab-rake gitlab:env:info | tee -a gitlab-ce-12.10.14_after.txt ~~~ ##### 2.3.5 備份gitlab on 12.10.14 ~~~bash gitlab-rake gitlab:backup:create ~~~  ## 步驟二:安裝gitlab @RHEL8.8 於新的機器上(RHEL8.8),安裝gitlab(12.10.14) ### 1.安裝gitlab ~~~bash yum localinstall gitlab-ce-12.10.14-ce.0.el8.x86_64.rpm | tee gitlab-ce-12.10.14_install.txt ~~~ ### 2.修改設定檔 將原有機器上(RHEL7.6)的config複製到新機器上。 檔案位置 => /etc/gitlab/gitlab.rb 以下為目前XXX的設定檔,幾點需要特別注意 > 1.external_url => 安裝過程中要使用新的IP,轉移完後才修改為原有IP > 2./git/git-data => 確認該資料夾要存在 ~~~bash external_url 'http://10.20.241.89' gitlab_rails['time_zone'] = 'Asia/Taipei' gitlab_rails['gitlab_email_from'] = 'gitlabService@XXX.com.tw' gitlab_rails['gitlab_email_display_name'] = 'gitlab' gitlab_rails['gitlab_default_can_create_group'] = false git_data_dirs({ "default" => { "path" => "/var/opt/gitlab/git-data" }, "git_400G" => { "path" => "/git/git-data" } }) gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "10.20.40.53" gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_domain'] = "10.20.40.53" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false ~~~ ### 3.重新config gitlab ~~~bash gitlab-ctl reconfigure ~~~ ### 4.驗證gitlab #### 4.1 gitlab健康狀態 ~~~bash #確認gitlab各個元件狀態 gitlab-rake gitlab:check | tee -a gitlab-ce-12.10.14_check.txt ~~~ #### 4.2 確認DB是否轉移 ~~~bash #status應該為[ up ] gitlab-rake db:migrate:status | tee -a gitlab-ce-12.10.14_check.txt ~~~ #### 4.3 gitlab元件狀態 ~~~bash #確認所有服務皆為run gitlab-ctl status | tee -a gitlab-ce-12.10.14_check.txt ~~~ #### 4.4 確認版本資訊 ~~~bash gitlab-rake gitlab:env:info | tee -a gitlab-ce-12.10.14_after.txt ~~~ ## 步驟三:匯入資料 @RHEL8.8 ### 1.複製檔案 > 檔案位置預設為 => /var/opt/gitlab/backups ### 2.還原資料 ~~~bash gitlab-rake gitlab:backup:restore BACKUP=1692092214_2023_08_15_12.10.14 ~~~   >hint1:檔名 => 要將完整名稱貼上  >hint2:權限 => 確認user & group為git  ### 3.驗證gitlab #### 3.1 gitlab健康狀態 ~~~bash #確認gitlab各個元件狀態 gitlab-rake gitlab:check | tee -a gitlab-restore_check.txt ~~~ #### 3.2 確認DB是否轉移 ~~~bash #status應該為[ up ] gitlab-rake db:migrate:status | tee -a gitlab-restore_check.txt ~~~ #### 3.3 gitlab元件狀態 ~~~bash #確認所有服務皆為run gitlab-ctl status | tee -a gitlab-restore_check.txt ~~~ #### 3.4 驗證repository清單 > 3.4.1 確認管理者帳號是否可以登入 > 3.4.2 確認namespace(repository)數量是否正確 > 3.4.3 確認namespace(repository)資料是否正確 > 3.4.4 確認user & group是否正確 > 3.4.5 確認project是否正確 > 3.4.6 確認git client是否可以正常使用 ## 步驟四:升級gitlab @RHEL8.8 ### 1.保留git版本資訊 ~~~bash gitlab-rake gitlab:env:info | tee -a gitlab-ce-12.10.14_before.txt ~~~ ### 2.升級至[ gitlab-ce-15.4.6 ] >依升級途徑,重複以下步驟,直至升級到15.4.6(共11次) #### 2.1 保留git版本資訊 ~~~bash gitlab-rake gitlab:env:info | tee -a gitlab-ce-13.0.14_before.txt ~~~ #### 2.2 升級至[ x.y.z ] ~~~bash yum localinstall gitlab-ce-[ 13.0.14 ]-ce.0.el8.x86_64.rpm | tee gitlab-ce-13.0.14_install.txt ~~~ #### 2.3 驗證gitlab ##### 2.3.1 gitlab健康狀態 ~~~bash gitlab-rake gitlab:check | tee -a gitlab-ce-13.0.14_check.txt ~~~ ##### 2.3.2 確認DB是否轉移 ~~~bash #status應該為[ up ] gitlab-rake db:migrate:status | tee -a gitlab-ce-13.0.14_check.txt ~~~ ##### 2.3.3 gitlab元件狀態 ~~~bash #確認所有服務皆為run gitlab-ctl status | tee -a gitlab-ce-13.0.14_check.txt ~~~ ##### 2.3.4 確認版本資訊 ~~~bash gitlab-rake gitlab:env:info | tee -a gitlab-ce-13.0.14_after.txt ~~~ ### 3.驗證repository清單 > 3.1 確認管理者帳號是否可以登入 > 3.2 確認namespace(repository)數量是否正確 > 3.3 確認namespace(repository)資料是否正確 > 3.4 確認user & group是否正確 > 3.5 確認project是否正確 > 3.6 確認git client是否可以正常使用 > gitlab 14.X以後的版本,可多檢查 <font color="#1E90FF">Background Migrations</font> > 路徑 => <font color="#2E8B57"> Admin Area -> Background Migrations</font>   --- ## 附錄(一):Git常用指令 ~~~bash gitlab-rake gitlab:env:info #確認git資訊 ~~~  ~~~bash gitlab-rake gitlab:backup:create #進行git備份 ~~~  ~~~bash gitlab-rake gitlab:backup:restore BACKUP=1691486492_2023_08_08_12.10.14 #還原git備份 ~~~   ~~~bash gitlab-rake gitlab:check #檢查GitLab健康狀態 ~~~   ~~~bash gitlab-rake db:migrate:status #檢查資料庫是否搬移完成(status都up) ~~~  :::warning :bulb: gitlab-rake db:migrate => 如status顯示為down,使用此指令重新觸發migrate ::: ~~~bash gitlab-ctl status #確認GitLab元件的狀態 ~~~  --- ## 附錄(二):Git升級小memo > 升級過程中,可透過下列方法快速備份相關的log ~~~bash 12.10.14 => 13.0.14 => 13.1.11 => 13.8.8 => 13.12.15 => 14.0.12 => 14.3.6 => 14.9.5 => 14.10.5 => 15.0.5 => 15.4.6 => 15.10.8 version=15.10.8 gitlab-rake gitlab:env:info | tee -a gitlab-ce-${version}_before.txt yum localinstall gitlab-ce-${version}-ce.0.el8.x86_64.rpm | tee gitlab-ce-${version}_install.txt gitlab-rake gitlab:check | tee -a gitlab-ce-${version}_check.txt ; \ gitlab-rake db:migrate:status | tee -a gitlab-ce-${version}_check.txt ; \ gitlab-ctl status | tee -a gitlab-ce-${version}_check.txt ; \ gitlab-rake gitlab:env:info | tee -a gitlab-ce-${version}_after.txt ; \ mkdir gitlab_log/gitlab-ce-${version} ; mv gitlab-ce-${version}*.txt gitlab_log/gitlab-ce-${version} ; mv gitlab-ce-${version}-ce.0.el8.x86_64.rpm gitlab_rpm ; ~~~ --- ## 附錄(三):重新設定root密碼 >開啟Rails console ~~~bash gitlab-rails console ~~~ >依序輸入下列指令 ~~~bash user = User.where(id: 1).first #查詢id唯一的是誰(通常是root) user.password = 'your secret' #輸入欲變更的密碼(在15.3後,需注意,密碼要符合複雜性原則) user.password_confirmation = 'your secret' #確認密碼 user.save #儲存 exit ~~~ #### 範例 ~~~bash [root@gitlab02 ~]# gitlab-rails console -------------------------------------------------------------------------------- Ruby: ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [x86_64-linux] GitLab: 15.10.8 (a47a26d5673) FOSS GitLab Shell: 14.18.0 PostgreSQL: 12.14 ------------------------------------------------------------[ booted in 16.93s ] Loading production environment (Rails 6.1.7.2) irb(main):001:0> user = User.where(id: 1).first => #<User id:1 @root> irb(main):002:0> user.password = 'Root12345' => "Root12345" irb(main):003:0> user.password_confirmation = 'Root12345' => "Root12345" irb(main):004:0> user.save => false #false是因為密碼不符合複雜性原則 irb(main):005:0> user.password = '$RFV3edc' => "$RFV3edc" irb(main):006:0> user.password_confirmation = '$RFV3edc' => "$RFV3edc" irb(main):007:0> user.save => true irb(main):008:0> exit ~~~
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up