GitLab.com is using the omnibus-gitlab package and it is configured in the HA configuration as per docs in https://docs.gitlab.com/ee/administration/high_availability/... .
The actual update is being done using the directions in https://docs.gitlab.com/omnibus/update/README.html#multi-nod.... We use a custom built tool to enforce that zero downtime upgrade and the tool is in https://gitlab.com/gitlab-org/takeoff/ .
I do have to note that the tool is something we use temporarily as we are working towards refactoring part of infrastructure towards Kubernetes.