środa, 13 lutego 2019

Aktualizacja GitLab z wersji 7.x do 11.x, wraz z aktualizacją Ubuntu z wersji 14.04 do 18.04

Zdarza się przejąć serwer nieaktualizowany od dawna. W tym przypadku jest to serwer z Ubuntu 14.04 i gitlabem w wersji 7.x.

Na wstępie:
- Paczki ściągamy z https://packages.gitlab.com/gitlab/gitlab-ce i wybieramy je zależnie od wersji systemu
- Należy zrobić kopię katalogu /etc/gitlab
- Aktualizacja była wykonana na sklonowanej maszynie, jeśli nie macie takiej możliwości należy wykonać backup gitlaba
- Procedura powinna wyglądać podobnie na Debianie lecz nie testowałem (oczywiście paczki muszą być ściągane wtedy dla danego Debiana zamiast Ubuntu)

W pierwszej kolejności aktualizujemy Ubuntu 14.04

apt update
apt upgrade

restart sprawdzamy czy gitlab wstał (jeśli sklonowana maszyna sprawdzamy logi celem eliminacji błędów)

Ściągamy gitlaba w wersji 8 dla Ubuntu 14.04

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_8.17.7-ce.0_amd64.deb/download.deb

i go instalujemy

dpkg -i gitlab-ce_8.17.7-ce.0_amd64.deb


Sprawdzamy czy wersja się podniosła:
root@git-clone:/opt/upgrade# grep gitlab /opt/gitlab/version-manifest.txt
gitlab-ce 8.17.7
gitlab-config-template   8.17.7                                    
gitlab-cookbooks         8.17.7                                    
gitlab-ctl               8.17.7                                    
gitlab-healthcheck       42dc7323afc83ea6026fc834e903617b          
gitlab-monitor           v1.1.0                                      git:927f12e0054670a4cb567dfac58c0c13e399062c                            
gitlab-pages             v0.3.2                                      git:7285dc67ad53305889f577297fc5544c0fe8703f                            
gitlab-psql              f3696a0d5d2c32dffc0e753f53e2537c          
gitlab-rails             v8.17.7                                     git:756f85375b4df446aaf0bbe30ee72a882ba49a51                            
gitlab-scripts           8.17.7                                    
gitlab-selinux           8.17.7                                    
gitlab-shell             v4.1.1                                      git:a3712cc18de8283b25c3a8a034ecc8c9b7feca48                            
gitlab-workhorse         v1.3.0                                      git:b30cda2218572674082636d9851086eeee9a971f  


I status gitlab`a

root@git-clone:/opt/upgrade# gitlab-ctl status
run: gitlab-workhorse: (pid 11050) 127s; run: log: (pid 11015) 141s
run: logrotate: (pid 11073) 126s; run: log: (pid 915) 1454s
run: nginx: (pid 11062) 126s; run: log: (pid 917) 1454s
run: postgresql: (pid 10902) 261s; run: log: (pid 918) 1454s
run: redis: (pid 10844) 263s; run: log: (pid 922) 1454s
run: sidekiq: (pid 11033) 140s; run: log: (pid 924) 1454s
run: unicorn: (pid 11084) 125s; run: log: (pid 916) 1454s



Wchodzimy na stronę  www gita i weryfikujemy czy działa. Jeśli jest ok aktualizujemy dalej do wersji 9.x dla Ubuntu 14.04.

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_9.2.10-ce.0_amd64.deb/download.deb

dpkg -i gitlab-ce_9.2.10-ce.0_amd64.deb

root@git-clone:/opt/upgrade# grep gitlab /opt/gitlab/version-manifest.txt
gitlab-ce 9.2.10
gitlab-config-template   9.2.10                                    
gitlab-cookbooks         9.2.10                                    
gitlab-ctl               9.2.10                                    
gitlab-healthcheck       a596f019c73c7aeb89ddd912d237addf          
gitlab-monitor           v1.6.0                                     git:06964419a9441910e6816bc46231a843fc635b01                            
gitlab-pages             v0.4.2                                     git:dccd0f2b3206c2935b41ad1cedc02bd4922446b8                            
gitlab-psql              ff26e3be21c690dd34db5cc8fc6c9b55          
gitlab-rails             v9.2.10                                    git:7586e82714a6479bc3581532e11d03bead1cc982                            
gitlab-scripts           9.2.10                                    
gitlab-selinux           9.2.10                                    
gitlab-shell             v5.0.4                                     git:285c061ed8933c0d94a9ad027f99653039673324                            
gitlab-workhorse         v2.0.0                                     git:eacd5b7aff7cc1b51a2409d8645dfc61904f308c                            
root@git-clone:/opt/upgrade# gitlab-ctl status
run: gitaly: (pid 20877) 23s; run: log: (pid 19931) 112s
run: gitlab-monitor: (pid 20883) 23s; run: log: (pid 19989) 101s
run: gitlab-workhorse: (pid 20046) 85s; run: log: (pid 11015) 866s
run: logrotate: (pid 20886) 22s; run: log: (pid 915) 2179s
run: nginx: (pid 20922) 20s; run: log: (pid 917) 2179s
run: node-exporter: (pid 20892) 22s; run: log: (pid 19968) 104s
run: postgres-exporter: (pid 20897) 21s; run: log: (pid 19981) 102s
run: postgresql: (pid 20928) 19s; run: log: (pid 918) 2179s
run: prometheus: (pid 20902) 21s; run: log: (pid 19957) 106s
run: redis: (pid 19387) 167s; run: log: (pid 922) 2179s
run: redis-exporter: (pid 20910) 21s; run: log: (pid 19975) 103s
run: sidekiq: (pid 20915) 20s; run: log: (pid 924) 2179s
run: unicorn: (pid 20938) 19s; run: log: (pid 916) 2179s
root@git-clone:/opt/upgrade#

Sprawdzamy czy www działa

Jeśli ok, to aktualizacja do wersji 9.5 wybieramy ostatnią najnowszą dla Ubuntu 14.04 (żeby zainstalować gitlaba w wersji 10.x, jest niezbędna instalacja 9.5. Można spróbować zainstalować od razu 9.5 zamiast 9.2)

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_9.5.9-ce.0_amd64.deb/download.deb

dpkg -i gitlab-ce_9.5.9-ce.0_amd64.deb

root@git-clone:/opt/upgrade# grep gitlab /opt/gitlab/version-manifest.txt
gitlab-ce 9.5.9
gitlab-config-template   9.5.9                                    
gitlab-cookbooks         9.5.9                                    
gitlab-ctl               9.5.9                                    
gitlab-healthcheck       a596f019c73c7aeb89ddd912d237addf          
gitlab-monitor           v1.9.0                                     git:1cf4c45e862742cb86b06828e051330c16a4631c                            
gitlab-pages             v0.5.1                                     git:15c938cafbd95064bbc4be34cd72091f9a61edaa                            
gitlab-psql              ff26e3be21c690dd34db5cc8fc6c9b55          
gitlab-rails             v9.5.9                                     git:19893b0ab5d2ae1b7e9a61a511b30f6651371e50                            
gitlab-scripts           9.5.9                                    
gitlab-selinux           9.5.9                                    
gitlab-shell             v5.8.0                                     git:1e587d3b7fbe596ab010cb022b0c6526d2489613                            
gitlab-workhorse         v3.0.0                                     git:e6cfe0c0c6aafe639cdf2c362eab860053bc07cb                            
root@git-clone:/opt/upgrade# gitlab-ctl status
run: gitaly: (pid 7002) 38s; run: log: (pid 19931) 1021s
run: gitlab-monitor: (pid 7035) 37s; run: log: (pid 19989) 1010s
run: gitlab-workhorse: (pid 7023) 37s; run: log: (pid 11015) 1775s
run: logrotate: (pid 7065) 35s; run: log: (pid 915) 3088s
run: nginx: (pid 7071) 35s; run: log: (pid 917) 3088s
run: node-exporter: (pid 7077) 34s; run: log: (pid 19968) 1013s
run: postgres-exporter: (pid 7118) 34s; run: log: (pid 19981) 1011s
run: postgresql: (pid 6419) 111s; run: log: (pid 918) 3088s
run: prometheus: (pid 7043) 36s; run: log: (pid 19957) 1015s
run: redis: (pid 6421) 110s; run: log: (pid 922) 3088s
run: redis-exporter: (pid 7128) 33s; run: log: (pid 19975) 1012s
run: sidekiq: (pid 7133) 33s; run: log: (pid 924) 3088s
run: unicorn: (pid 7140) 33s; run: log: (pid 916) 3088s


Sprawdzamy na www czy gitlab działa.
Jeśli ok, to instalujemy najnowszą wersje 10 przeznaczona dla Ubuntu 14.04

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_10.8.7-ce.0_amd64.deb/download.deb

root@git-clone:/opt/upgrade# grep gitlab /opt/gitlab/version-manifest.txt
gitlab-ce 10.8.7
gitlab-config-template   10.8.7                                    
gitlab-cookbooks         10.8.7                                    
gitlab-ctl               10.8.7                                    
gitlab-healthcheck       a596f019c73c7aeb89ddd912d237addf          
gitlab-monitor           v2.16.0                                    git:bc1fc7bb78aa18247a1c89f884eabc62f90ea28a                            
gitlab-pages             v0.9.1                                     git:7edf64c1951e2184890403ab60c26381dd81e942                            
gitlab-psql              fdf6f1b9931a92993bec79893998d39c          
gitlab-rails             v10.8.7                                    git:eb600b0b2f8fa825fe5a3150b6e846a712db4441                            
gitlab-scripts           10.8.7                                    
gitlab-selinux           10.8.7                                    
gitlab-shell             v7.1.2                                     git:dc67cf1a62529bf7aecc8e350994ac40d5f4a068                            
gitlab-workhorse         v4.2.1                                     git:3005778d892306be588883b67f5935d587b31ed7                            
root@git-clone:/opt/upgrade# gitlab-ctl status
run: alertmanager: (pid 17651) 34s; run: log: (pid 17664) 33s
run: gitaly: (pid 17623) 35s; run: log: (pid 19931) 1475s
run: gitlab-monitor: (pid 17700) 31s; run: log: (pid 19989) 1464s
run: gitlab-workhorse: (pid 17612) 35s; run: log: (pid 11015) 2229s
run: logrotate: (pid 17704) 31s; run: log: (pid 915) 3542s
run: nginx: (pid 17710) 31s; run: log: (pid 917) 3542s
run: node-exporter: (pid 17716) 30s; run: log: (pid 19968) 1467s
run: postgres-exporter: (pid 17682) 33s; run: log: (pid 19981) 1465s
run: postgresql: (pid 17438) 133s; run: log: (pid 918) 3542s
run: prometheus: (pid 17638) 34s; run: log: (pid 19957) 1469s
run: redis: (pid 17419) 135s; run: log: (pid 922) 3542s
run: redis-exporter: (pid 17725) 30s; run: log: (pid 19975) 1466s
run: sidekiq: (pid 17730) 29s; run: log: (pid 924) 3542s
run: unicorn: (pid 17745) 29s; run: log: (pid 916) 3542s

Sprawdzamy na www czy gitlab działa.

Jeśli ok aktualizujemy UBUNTU do wersji 16.04

do-release-upgrade

Po aktualizacji nastąpi restart maszyny

Jeśli po restarcie gitlab się nie podniesie to:
gitlab-ctl reconfigure
gitlab-ctl status


Sprawdzamy na www czy gitlab działa.

Jeśli jest ok aktualizujemy Ubuntu do wersji 18.04

do-release-upgrade

Po aktualizacji nastąpi restart maszyny

Aktualizujemy do najnowszej wersji 11.x dla Ubuntu 18.04

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/bionic/gitlab-ce_11.7.5-ce.0_amd64.deb/download.deb

root@git-clone:/opt/upgrade# dpkg -i gitlab-ce_11.7.5-ce.0_amd64.deb
(Odczytywanie bazy danych ... 156043 pliki i katalogi obecnie zainstalowane.)
Przygotowywanie do rozpakowania pakietu gitlab-ce_11.7.5-ce.0_amd64.deb ...
* git_data_dir has been deprecated since 8.10 and removed in 11.0. Use git_data_dirs instead.
Deprecations found. Please correct them and try again.
dpkg: błąd przetwarzania archiwum gitlab-ce_11.7.5-ce.0_amd64.deb (--install):
 new gitlab-ce package pre-installation script subprocess returned error exit status 1
Wystąpiły błędy podczas przetwarzania:
 gitlab-ce_11.7.5-ce.0_amd64.deb


Jeśli pojawi nam sie taki błąd, to należy w pliku /etc/gitlab/gitlab.rb zamienić wpis (na podstawie https://docs.gitlab.com/omnibus/settings/configuration.html#storing-git-data-in-an-alternative-directory):
git_data_dir /opt/gitlab/gitlab-data
na
git_data_dirs ({ "default" => { "patch" => "/opt/gitlab/gitlab-data" } })

gitlab-ctl reconfigure
i ponownie
dpkg -i gitlab-ce_11.7.5-ce.0_amd64.deb

root@git-clone:/opt/upgrade# grep gitlab /opt/gitlab/version-manifest.txt
gitlab-ce 11.7.5
gitlab-config-template        11.7.5                                    
gitlab-cookbooks              11.7.5                                    
gitlab-ctl                    11.7.5                                    
gitlab-healthcheck            1c4cd0e8e06f0ccf04e72e3b536beabf          
gitlab-monitor                v2.19.1                                    git:f4c4ef9c42457a3a8a2bb153a5f0798f1d8ed3ed                            
gitlab-pages                  v1.3.1                                     git:b1c5548bb50552003fd94491b62625390d742ac5                            
gitlab-psql                   7e26463d2041e381a5d8ff694847f93a          
gitlab-rails                  v11.7.5                                    git:c5b5b18b3f1c5b683ceb4471e667d675de9200eb                            
gitlab-scripts                11.7.5                                    
gitlab-selinux                11.7.5                                    
gitlab-shell                  v8.4.4                                     git:5969bd068d8aa9b19e69c96c8644f821602b4c6e                            
gitlab-workhorse              v8.0.2                                     git:e6c51668c850afbc8032dddee0037a4066da2e08                            
root@git-clone:/opt/upgrade# /opt/gitlab/bin/gitlab-ctl status
run: alertmanager: (pid 27713) 34s; run: log: (pid 724) 2415s
run: gitaly: (pid 27616) 38s; run: log: (pid 857) 2412s
run: gitlab-monitor: (pid 27653) 37s; run: log: (pid 853) 2412s
run: gitlab-workhorse: (pid 27591) 39s; run: log: (pid 852) 2412s
run: logrotate: (pid 27758) 32s; run: log: (pid 722) 2415s
run: nginx: (pid 27603) 38s; run: log: (pid 859) 2412s
run: node-exporter: (pid 27633) 37s; run: log: (pid 848) 2412s
run: postgres-exporter: (pid 27730) 34s; run: log: (pid 855) 2412s
run: postgresql: (pid 9755) 860s; run: log: (pid 854) 2412s
run: prometheus: (pid 27676) 35s; run: log: (pid 851) 2412s
run: redis: (pid 27582) 39s; run: log: (pid 735) 2415s
run: redis-exporter: (pid 27663) 36s; run: log: (pid 856) 2412s
run: sidekiq: (pid 27552) 57s; run: log: (pid 723) 2415s
run: unicorn: (pid 27825) 32s; run: log: (pid 858) 2412s


Sprawdzamy na www czy gitlab działa. W ten sposób mamy najnowszą wersję Ubuntu 18.04 i najnowszą wersję gitlaba.