I inherited a GitLab that has not been updated since it was installed a few years ago. I am trying to bring it up to date but could use some assistance. It is currently on 12.4.2. When I do a yum search to see if there is something higher in 12. before I go to 13 it doesn’t find anything. To complicate matters we recently started using our GitLab a lot more so I need to get it up to date without totally breaking it.
At this time, the upgrade path to get you from 12.4.2 to latest (14.1.2) is:
12.4.2
→ 12.10.14
→ 13.0.14
→ 13.1.11
→ 13.12.9
→ 14.0.7
→ 14.1.2
This is assuming you’re running a single node GitLab Omnibus instance that is using the included PostgreSQL and Redis. If you’re using an external PostgreSQL, you’ll want to upgrade that to be compatible with your GitLab version.
Before doing upgrades, I suggest taking a backup of your GitLab data Back up and restore GitLab | GitLab and/or filesystem snapshot for recovery purposes, just in case.
If you’re using the Linux package on a RHEL or CentOS 7/8 system, you can run the following to add the gitlab-ee
packages to your yum repository list:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
After running this, you should find all 12.x.x, 13.x.x, and 14.x.x are discovered and available through YUM.
# RHEL/CentOS 6 and 7
yum --showduplicates list gitlab-ee
# RHEL/CentOS 8
dnf search gitlab-ee*
Be sure to check for background migrations between upgrades before moving on to the next step.
If you’re using GitLab CI/CD, you’ll also want to upgrade your GitLab runners to match your GitLab version. GitLab Runner | GitLab
Last but not least I also suggest reading or bookmarking our section on version-specific upgrades
So it sounds like the first question I need to be able to answer is was it installed with Omnibus. Is there a command I can use to determine that? The next would be if it is set up with PostgreSQL and Redis or an external PostgreSQL.
You should be able to tell if you’re running Omnibus by running the following commands on your server:
# for Omnibus Linux package
sudo yum list gitlab-*
# or Omnibus Docker container
sudo docker ps | grep gitlab
If you see a gitlab-ee
or gitlab-ce
package, or a docker container running named gitlab
, then you’re running GitLab Omnibus. It’s the most common installation method and the only way to install GitLab that uses the yum package manager.
To find out if you’re using the PostgreSQL and Redis components that come bundled with GitLab, you can run the following
gitlab-ctl status | egrep "redis|postgresql"
If you’re using the embedded versions, you’ll see output similar to this:
run: postgresql: (pid 2844) 1390452s; run: log: (pid 2865) 1390449s
run: redis: (pid 2639) 1390469s; run: log: (pid 2655) 1390466s
If you’re using an external postgresql or redis, they will not show up.
Hope this helps!
This was awesome thank you!
Looking at these dependencies for a few of these updates. Does the Git version update automatically with the gitlab or does that need to be run seperately?
Git is embedded in Gitlab Omnibus so if they update it then yes it is updated.
I just wanted to Drop this link here in case it’s needed… this was my full write-up of my own ancient to current upgrade:
https://gitlab.com/cyvon/gitlab-helm-upgrade-v1.7.1-to-5.0.6