-
Select Version to Install
- 0. Backup
- 1. Stop server
- 2. Get latest code for the stable branch
- 3. Install libraries, migrations, etc
- 4. Update GitLab Workhorse to the corresponding version
- 5. Update Gitaly to the corresponding version
- 6. Update GitLab Shell to the corresponding version
- 7. Update GitLab Pages to the corresponding version (skip if not using pages)
- 8. Install/Update
gitlab-elasticsearch-indexer
- 9. Start application
- 10. Check application status
- 11. Make sure background migrations are finished
Universal update guide for patch versions for self-compiled installations
Select Version to Install
Make sure you view this update guide from the tag (version) of GitLab you would like to install.
In most cases this should be the highest numbered production tag (without rc
in it).
You can select the tag in the version dropdown list in the upper-left corner of GitLab.
0. Backup
Make a backup just in case things go south. Depending on the installation method, backup commands vary. See the backing up and restoring GitLab documentation.
1. Stop server
# For systems running systemd
sudo systemctl stop gitlab.target
# For systems running SysV init
sudo service gitlab stop
2. Get latest code for the stable branch
In the commands below, replace LATEST_TAG
with the latest GitLab tag you want
to update to, for example v8.0.3
. Use git tag -l 'v*.[0-9]' --sort='v:refname'
to see a list of all tags. Make sure to update patch versions only (check your
current version with cat VERSION
).
cd /home/git/gitlab
sudo -u git -H git fetch --all
sudo -u git -H git checkout -- Gemfile.lock db/structure.sql locale
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG
3. Install libraries, migrations, etc
cd /home/git/gitlab
# If you haven't done so during installation or a previous upgrade already
sudo -u git -H bundle config set --local deployment 'true'
sudo -u git -H bundle config set --local without 'development test kerberos'
# Update gems
sudo -u git -H bundle install
# Optional: clean up old gems
sudo -u git -H bundle clean
# Run database migrations
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
# Clean up assets and cache
sudo -u git -H bundle exec rake yarn:install gitlab:assets:clean gitlab:assets:compile cache:clear RAILS_ENV=production NODE_ENV=production NODE_OPTIONS="--max_old_space_size=4096"
4. Update GitLab Workhorse to the corresponding version
cd /home/git/gitlab
sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=production
5. Update Gitaly to the corresponding version
cd /home/git/gitlab
sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,/home/git/repositories]" RAILS_ENV=production
6. Update GitLab Shell to the corresponding version
cd /home/git/gitlab-shell
sudo -u git -H git fetch --all --tags
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_SHELL_VERSION) -b v$(</home/git/gitlab/GITLAB_SHELL_VERSION)
sudo -u git -H make build
7. Update GitLab Pages to the corresponding version (skip if not using pages)
cd /home/git/gitlab-pages
sudo -u git -H git fetch --all --tags
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
sudo -u git -H make
8. Install/Update gitlab-elasticsearch-indexer
Follow the install instruction.
9. Start application
# For systems running systemd
sudo systemctl start gitlab.target
sudo systemctl restart nginx.service
# For systems running SysV init
sudo service gitlab start
sudo service nginx restart
10. Check application status
Check if GitLab and its environment are configured correctly:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
To make sure you didn’t miss anything run a more thorough check with:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
If all items are green, then congratulations upgrade complete!
11. Make sure background migrations are finished
Check the status of background migrations and make sure they are finished.