Syntax highlighting of a612c8c ~( devops/giltab)

# GitLab

[GitLab Source](https://gitlab.com/gitlab-org/gitlab-ce/tree/master)

[GitLab Installation](https://about.gitlab.com/installation/)

[GitLab Docker Tutorial](https://docs.gitlab.com/omnibus/docker/)

[Gitlab Docker Image](https://hub.docker.com/r/gitlab/gitlab-ce/)

[GitLab Docker images Manual](https://docs.gitlab.com/omnibus/docker/)

**[Administrator documentation](https://docs.gitlab.com/ce/administration/)**

[Поднимаем Gitlab в docker-контейнерах за Nginx](https://letsclearitup.com.ua/nginx/podnimaem-gitlab-v-docker-konteynerah-za-nginx.html)


## Запуск Gitlab

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

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

```bash
docker run -d \
  --hostname gitlab.moe-sobranie.ru \
  --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
``` 

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

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


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

```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
```


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


[Back up and restore GitLab](https://docs.gitlab.com/ee/raketasks/backup_restore.html)

```bash
docker exec -it iaac_gitlab bash
export PGOPTIONS="--ignore_system_indexes=1"
gitlab-backup create SKIP=db
# Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data 
# and are not included in this backup. You will need these files to restore a backup.
# Please back them up manually.
exit
docker cp iaac_gitlab:/var/opt/gitlab/backups/XXXXXX_YYYY_MM_DD_13.12.6_gitlab_backup.tar .
# docker exec -it iaac_gitlab bash
# rm /var/opt/gitlab/backups/XXXX...

# копируем бекап и конфигурацию
scp hd0:~/XXXXXX_YYYY_MM_DD_13.12.6_gitlab_backup.tar .
scp hd0:/srv/gitlab/config/gitlab.rb .
scp hd0:/srv/gitlab/config/gitlab-secrets.json .
```

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

[Gitlab Quick Actions](https://gitlab.itmonitoring.pro/help/user/project/quick_actions)


https://docs.gitlab.com/ee/user/project/time_tracking.html
```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
```