= GitLab =
<<TableOfContents()>>
[[https://docs.gitlab.com/ee/install/docker.html]]
[[https://hub.docker.com/r/gitlab/gitlab-ce]]
[[https://gitlab.com/gitlab-org/gitlab-ce/tree/master|GitLab Source|class=" moin-https"]]
[[https://about.gitlab.com/installation/|GitLab Installation|class=" moin-https"]]
[[https://docs.gitlab.com/omnibus/docker/|GitLab Docker Tutorial|class=" moin-https"]]
[[https://hub.docker.com/r/gitlab/gitlab-ce/|Gitlab Docker Image|class=" moin-https"]]
[[https://docs.gitlab.com/omnibus/docker/|GitLab Docker images Manual|class=" moin-https"]]
'''[[https://docs.gitlab.com/ce/administration/|Administrator documentation|class=" moin-https"]]'''
[[https://letsclearitup.com.ua/nginx/podnimaem-gitlab-v-docker-konteynerah-za-nginx.html|Поднимаем Gitlab в docker-контейнерах за Nginx|class=" moin-https"]]
== Вложенные материалы ==
<<ItemList(display=”ChildName”)>>
== Запуск Gitlab ==
=== Без прокси-сервера ===
Проще всего запустить Gitlab на отдельном сервере без фронтального прокси. Предварительно необходимо изменить ssh порт (22) на другой, т.к. этот порт будет прокидываться в контейнер гитлаба
Типовая команда запуска.
{{{#!highlight bash
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*.
{{{#!highlight bash
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
}}}
=== С прокси-сервером ===
Порядок действий:
1. получаем TLS сертификаты через certbot
1. запускаем gitlab без https, порты наружу не выводим (кроме 22)
1. запускаем nginx с TLS-сертификатами и upstream-им в гитлаб.
== Мажорное обновление Gitlab ==
{{{#!highlight bash
# --- цикл обновления
# Необходимо повторить для каждой мажорной версии
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
}}}
== Резервирование и восстановление ==
[[https://docs.gitlab.com/ee/raketasks/backup_restore.html|Back up and restore GitLab|class=" moin-https"]]
[[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]]
=== Создание резервной копии ===
{{{#!highlight bash
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]]
{{{#!wiki note
Версия резервной копии должна соответствовать версии запущенного gitlab.
}}}
{{{#!highlight bash
# 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
}}}
== Команды в комметариях ==
[[https://gitlab.itmonitoring.pro/help/user/project/quick_actions|Gitlab Quick Actions|class=" moin-https"]]
https://docs.gitlab.com/ee/user/project/time_tracking.html
{{{#!highlight bash
# 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
}}}