Today is not a lot of fun.

I’ve been seeing some issues with apt not being able to upgrade Gitlab due to a proxy error. This morning I fixed it and the upgrade from 11.11.2 to 12.1.1 began – and failed miserably!

It complained with all kinds of problems not being able to carry out migrations:

Exception: Your database is missing the 'cache_invalidation_event_id' column from the 'geo_event_log' table that is present for GitLab EE.
 Even though it looks like you're running a CE installation, it appears
 you may have installed GitLab EE at some point. To migrate to GitLab 12.0:
 Install GitLab 11.11.3 EE
 Install GitLab 12.0.x CE 

This was just the start of my problems.

You could continue reading, but the end result is that I needed to read what the error message above suggested. Install EE AND then install CE. I took the long way around to get there.

I tried following some guidance about dropping tables using the dbconsole, but I just seemed to be going down deeper into the rabbit hole.

$ sudo gitlab-rails dbconsole

I checked I had backups:

$ ls -lh /var/opt/gitlab/backups/
total 367M
-rw------- 1 git git 270K Sep  3  2018 1535972468_2018_09_03_11.0.4_gitlab_backup.tar
 -rw------- 1 git git 720K Feb 19 11:01 1550574061_2019_02_19_11.2.3_gitlab_backup.tar
 -rw------- 1 git git 1.2M May  2 09:24 1556785455_2019_05_02_11.7.5_gitlab_backup.tar
 -rw------- 1 git git 1.3M Jun  5 09:05 1559721901_2019_06_05_11.10.4_gitlab_backup.tar
 -rw------- 1 git git 1.3M Jun  5 15:37 1559745479_2019_06_05_11.11.1_gitlab_backup.tar
 -rw------- 1 git git 4.0M Jul 25 10:21 1564046471_2019_07_25_11.11.2_gitlab_backup.tar
 -rw------- 1 git git 357M Jul 25 11:13 1564049595_2019_07_25_12.1.1_gitlab_backup.tar
 -rw-r--r-- 1 git git  247 Jul 25 10:21 backup_information.yml
 drwxr-xr-x 2 git git 4.0K Jul 25 10:21 db

Thankfully I do.

But now I have to rollback my gitlab-ce installation to version 11.11.2. This took me some figuring out as the gitlab restore fails because my install is newer than the data I’m trying to restore.

Because I have a apt install I can use version pinning to get back to a working version.

I created a file /etc/apt/preferences.d/gitlab and put in the following:

Package: gitlab-ce
Pin: version 11.11.2*
Pin-Priority: 550

This allowed me to do an apt remove to the 12.1.1 install and reinstall 11.11.2.

$ sudo apt remove gitlab-ce
$ sudo apt install gitlab-ce

Because I pinned gitlab-ce to 11.11.2 it just reinstalled and now we’re back to a functioning Gitlab. I just have to figure out how to safely more forward.

After the dbconsole drop tables etc. I decided to restore the backup that was taken at the beginning of the upgrade.

$ sudo gitlab-rake gitlab:backup:restore BACKUP=1564046471_2019_07_25_11.11.2

Then I edited the /etc/apt/preferences.d/gitlab preferences file and as it suggested in the original error pinned it to 12.0.0-ce, but again that failed.

The post I was seeing suggested that the problem begins at 11.11.3 with the geo nodes changes. So I pinned the version at 11.11.3* and carried out that upgrade. This worked successfully!

Now to pin it to the top of the version 11 as 11.11.5* … success!

Where it still fails is the upgrade to 12.0.0. So this is where I am was

That was until it was pointed out that I needed to install the 11.11.5-ee (Enterprise Edition) first. Then install 12.0.0-ce (Community Edition) to upgrade it to 12.

This worked. Then I removed the apt pinning and let it upgrade to the latest release (12.1.1-ce) and we’re all golden.

I did learn a lot about Gitlab during this process. So it wasn’t in vain. Just a whole day of effort invested in something that should have only been 20 minutes of work. I’m just so glad this is on a Linux virtual host so I could snapshot it and rollback and use version pinning easily.