Gitlab

Migrationsgedöns

Mit python-gitlab api

  • Liste von Projekten als CSV einlesen
  • Per API:
  • alle neuen und weiterverwendeten Namespaces anlegen. gitlab -v -g new group create --name msh-test2 --path msh-test2
  • Pro Prokjekt:
    • Anlegen in richtigem Namespace: gitlab -v -g new project create --name whatever --namespace-id 24
    • git clone --mirror $proj: git clone --mirror git@git.example.com:example/2012-gitlab-test.git && cd $proj
    • git remote add new $url
    • git push nach new
    • lokal löschen

Offene Fragen:

  • Projektberechtigungen?
  • LFS?
  • Forwardings?

Nginx reloaden

Z.B. bei neuen SSL-Certs: gitlab-ctl hup nginx

Gitlab Pages cert erneuern

Leider ziemlicher Blindflug.

  • Cert machen mit gethttpsforfree (static.example.com, *.static.example.com)
  • Cert kopieren nach /etc/gitlab/ssl/wildcard.static.example.com.bundle.pem
  • Key kopieren nach /etc/gitlab/ssl/wildcard.static.example.com.key
  • gitlab-ctl hup nginx

LDAP-User umbenennen

Wenn jemand plötzlich anders heißt, muss in Gitlab die UID geändert werden, damit der User noch gefunden wird. Geht mit folgendem API call: curl -X "PUT" "https://git.example.com/api/v4/users/5" -H "PRIVATE-TOKEN: $GIT_PRIVATE_TOKEN" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" --data-urlencode "extern_uid=uid=neuervorname.neuernachname,ou=people,dc=example,dc=com" --data-urlencode "provider=ldapdas"

Darauf sollte Gitlab mit allen Userinfos einschließlich uid antworten. PITFALL: typischerweise meldet sich der User einmal mit dem neuen Namen an und findet ein leeres Gitlab vor, weil dafür ein neuer Account angelegt wird. DER MUSS ERST WIEDER GELÖSCHT WERDEN! Sonst ist diese uid logischerweise schon belegt und Gitlab kann sie nicht ändern, dummerweise gibt's dabei auch keine Fehlermeldung.

API Calls zum merken (curl)

User blocken

Mit ID: curl --request POST "https://git.example.com/api/v4/users/666/block" --header "PRIVATE-TOKEN: $GIT_PRIVATE_TOKEN"

Wenn man die ID nicht weiß, rausbaldowern mit Script (sysadmin-toolbox/get-gitlab-id-by-name.sh h.p.baxxter) oder wenn man n KRASSER checker ist das direkt im Script ausführen:

curl --request POST "https://git.example.com/api/v4/users/$(~/sysadmin-toolbox/gitlab/get-gitlab-id-by-name.sh h.p.baxxter)/block" --header "PRIVATE-TOKEN: $GIT_PRIVATE_TOKEN"

Sidekiq Jobs stecken fest

https://about.gitlab.com/2019/09/13/why-we-created-the-gitlab-memory-team/ If a Sidekiq job runs, takes too much memory, and then gets killed, jobs in the queue will be retried indefinitely