GitLab

https://docs.gitlab.com/ee/install/docker.html

https://hub.docker.com/r/gitlab/gitlab-ce

GitLab Source

GitLab Installation

GitLab Docker Tutorial

Gitlab Docker Image

GitLab Docker images Manual

Administrator documentation

Поднимаем Gitlab в docker-контейнерах за Nginx

Вложенные материалы

Запуск Gitlab

Без прокси-сервера

Проще всего запустить Gitlab на отдельном сервере без фронтального прокси. Предварительно необходимо изменить ssh порт (22) на другой, т.к. этот порт будет прокидываться в контейнер гитлаба Типовая команда запуска.

docker run -d \
  --hostname gitlab.example.com \
  --publish 22:22 \
  --publish 80:80 \
  --publish 443:443 \
  --publish 5050:5050 \
  --name gitlab \
  --restart always \
  --volume /srv/config:/etc/gitlab \
  --volume /srv/logs:/var/log/gitlab \
  --volume /srv/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

Получаем пароль пользователя *root*.

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

С прокси-сервером

Порядок действий:

  1. получаем TLS сертификаты через certbot
  2. запускаем gitlab без https, порты наружу не выводим (кроме 22)
  3. запускаем nginx с TLS-сертификатами и upstream-им в гитлаб.

Мажорное обновление Gitlab

# --- цикл обновления
#     Необходимо повторить для каждой мажорной версии
docker-compose run --rm gitlab bash

# --- for localhost
# chmod 2770 /var/opt/gitlab/git-data/repositories
# docker exec -it iaac_gitlab_run /opt/gitlab/embedded/bin/runsvdir-start &

gitlab-ctl reconfigure
# --- команда может ругнуться, но данные будут обновлены
gitlab-ctl pg-upgrade
# --- будет создана директория srv/gitlab/data/postgresql/data.XX
#     еще надо будет перименовать в data
exit
cd /path/to/srv/gitlab/data/postgresql
sudo mv data data.YY
sudo mv data.XX data

# --- проверяем, что всё прошло хорошо
docker-compose up

Резервирование и восстановление

Back up and restore GitLab

https://docs.gitlab.com/ee/administration/backup_restore/#prepare-and-transfer-content-from-the-old-server

https://docs.gitlab.com/ee/administration/backup_restore/index.html#migrate-to-a-new-server

Создание резервной копии

docker exec -it gitlab gitlab-ctl stop puma
docker exec -it gitlab gitlab-ctl stop sidekiq

docker exec gitlab gitlab-backup create

В директории */srv/data/backups* будет создан файл *xxx_gitlab_backup.tar*

Восстановление из резервной копии

https://docs.gitlab.com/ee/administration/backup_restore/restore_gitlab.html#restore-for-docker-image-installations

Версия резервной копии должна соответствовать версии запущенного gitlab.

# Stop the processes that are connected to the database
docker exec -it gitlab gitlab-ctl stop puma
docker exec -it gitlab gitlab-ctl stop sidekiq

# Verify that the processes are all down before continuing
docker exec -it gitlab gitlab-ctl status

# Run the restore. NOTE: "_gitlab_backup.tar" is omitted from the name
docker exec -it gitlab gitlab-backup restore BACKUP=1691276448_2023_08_06_15.11.2

# Restart the GitLab container
docker restart gitlab

# Check GitLab
docker exec -it gitlab gitlab-rake gitlab:check SANITIZE=true

Команды в комметариях

Gitlab Quick Actions

https://docs.gitlab.com/ee/user/project/time_tracking.html

# The following time units are available:
# -   Months (mo)
# -   Weeks (w)
# -   Days (d)
# -   Hours (h)
# -   Minutes (m)
# Default conversion rates are 1mo = 4w, 1w = 5d and 1d = 8h.
/estimate 3d 5h 10m