Rethink source installation update workflow

I am currently using a GitLab installation from source in multiple installations on different machines include a quite large one. And this works pretty well. In most cases the update instructions just work.

But I see some disadvantages and would like to discuss if there are other people experience the same.

Disadvantages

Patch and upgrade differs in structure

While I can understand that there are several differences between those two in general for example I don't understand why I should stop the GitLab and taking a backup afterwards in the big updates.

Static and not adjustable

Personally I do not like to place the GitLab under /home/git. I prefer a installation under /srv/git but this obviously it a matter of personal taste. But if I decide to install the GitLab in a different location I have to adjust all the commands again and again. In my case I just have to replace /home with /srv.

Repeating actions

Some commands repeat from update to update. You have got fetch. You have to checkout. And you have to select the tag in every patch version manually.

The current version of the sub-programs like gitaly or gitlab-workhorse are read from the files in the GitLab repository. But why do I have to specify them? The relative path should be always the same.

Proposal

You can see and maybe understand what I mean. There are several small issues (and probably more) which are not a deal breaker or a big issue but the get quite annoying if you have to update several instances frequently.

It would be nice to specify the version I would like to upgrade and the path to the root globally and the commands would adjust accordingly. This would be a huge improvement from my perspective.

I do not have a very specific plan on how to tackle this or maybe no one else has such issues. But if more people would benefit from this I can image two options

Dynamic Update Page

Design a page where some variables can be predefined like

  • source GitLab version
  • target GitLab version
  • GitLab installation path
  • installation path to the other tools (maybe default to the expected relative path)
  • maybe more?

Update Tool

I also could image a small tool which includes to upgrade workflow for each version of GitLab which I just have to run. Since the commands itself do not change very often I think this could work quite well. Also there you could default to a lot of variables right from the installation itself.

At least for the tool I would be happy to help if there is some need for this. Maybe I missed some points which are relevant too?

What do you think?

Edited Jul 07, 2025 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading