Руководство прикладного разработчика#

Системные требования#

На рабочей машине разработчика должны быть установлены следующие пакеты:

  • make

  • git

  • openssl

  • brew (только для MacOS)

  • git-core (только для Ubuntu)

  • Gitlab Development Kit (GDK)

Для Windows убедитесь, что установлена WSL версии 2, выполнив следующую команду в cmd или PowerShell:

> wsl -l -v

Пример результата:

  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2

Подключение и конфигурирование#

Полный путь директории GDK должен состоять не более чем из 60 символов. Проверить это можно следующей командой:

pwd | wc -c

После успешного клонирования необходимо запустить команду инициализации, которая установит все необходимые зависимости, в том числе asdf (менеджер управления версиями) и gem gitlab-development-kit:

make bootstrap

Миграция на текущую версию#

Миграция не предусмотрена в текущем релизе.

Быстрый старт#

Перед установкой Gitlab необходимо прописать переменную окружения FOSS_ONLY=1:

export FOSS_ONLY=1
echo -e "\nexport FOSS_ONLY=1" >> ~/.bash_profile 

В примере выше замените ~/.bash_profile в следующих случаях:

  • при использовании MacOS: замените на ~/.zshrc;

  • при использовании Ubuntu: замените на ~/.bashrc.

Приложение устанавливается из любого репозитория, который содержит fork нужной версии с доработками для платформы:

gdk install gitlab_repo=git@10.27.0.4:RELS/gitlab-pv.git

После успешной установки приложения, оно должно быть доступно по адресу http://127.0.0.1:3000.

Использование программного компонента#

  • Диагностика gdk:

    gdk doctor
    
  • Запуск, остановка, перезапуск и проверка статуса сервисов:

    gdk start/stop/restart/status <service>
    
  • Мониторинг логов:

    gdk tail <service>
    

    Можно также перечислить в качестве параметров отдельные логи по имени субдиректории в log/.

  • Запуск "тонкого" сервера для отладки в консоли.

    gdk thin
    

    После выхода из него нужно выполнить команду gdk start, чтобы запустилась стандартная Puma.

  • Вывод всех команд и логина/пароля для входа по умолчанию:

    gdk help
    

Часто встречающиеся проблемы и пути их устранения#

При установке gdk проблемы gpg с доступом к keyserver#

Ошибки:

gpg: сбой при получении с сервера ключей: Network is unreachable
gpg: сбой при получении с сервера ключей: No keyserver available

Решение:

Пропишите переменную окружения:

export NODEJS_CHECK_SIGNATURES=no

При попытке обратиться к Praefect возникает ошибка#

Ошибка:

Gitlab::Git::CommandError: 2:route repository creation: no healthy nodes.

В логах Praefect отображаются следующие сообщения:

2021-08-31_14:39:59.36697 [36mpraefect-gitaly-0     : [0mtime="2021-08-31T17:39:59+03:00" level=info msg="Starting GitalyversionGitaly, version 14.3.0-rc1-71-gd92449003"
2021-08-31_14:39:59.36765 [36mpraefect-gitaly-0     : [0mtime="2021-08-31T17:39:59+03:00" level=fatal msg="load config: config_path \"/Users/a19502986/projects/gitlab.com/gitlab-org/gitlab-development-kit/gitaly/gitaly-0.praefect.toml\": socket could not be created in /Users/a19502986/projects/gitlab.com/gitlab-org/gitlab-development-kit/tmp/praefect/gitaly-0: listen unix /Users/a19502986/projects/gitlab.com/gitlab-org/gitlab-development-kit/tmp/praefect/gitaly-0/test-7c30b076.sock: bind: invalid argument"

Решение:

  1. Переименуйте/переместите директорию, чтобы длина пути socket составляла меньше 104 символов.

  2. Переконфигурируйте GDK для определения директории:

    mv gitlab-development-kit/ gdk/
    cd gdk/
    go clean -cache
    gdk reconfigure
    

В этом случае также может помочь удаление директории gitaly и обновление GDK:

go clean -cache
rm -rf gitaly/
gdk update

Обсуждение похожей проблемы: Gitaly can't start.

При установке Gitlab командой gdk install отображается ошибка#

Ошибка:

Error downloading object: spec/fixtures/git-cheat-sheet.pdf (35967a2): Smudge error: Error downloading spec/fixtures/git-cheat-sheet.pdf (35967a21e5d856eaea89d2e5dd55a5e3b5f4e1e4efe3b000ef6d60b31600f1d2): batch response: Post https://10.27.0.4/RELS/gitlab-pv.git/info/lfs/objects/batch: x509: certificate signed by unknown authority

Решение:

Установите переменную окружения перед выполнением команды:

export GIT_SSL_NO_VERIFY=1

Ошибка с получением сертификатов при установке gdk#

Проблема:
В системе Windows с установленным Zscaler может появляться ошибка с получением сертификатов при установке gdk (этап с командой make).

Решение:

Деактивируйте Zscaler на время установки.

При установке GitLab командой gdk install выдаётся ошибка#

Ошибка:

Ruby version 2.7.4 detected, please install Ruby version 2.7.5 or higher

Решение:

Убедитесь, что в файле .tool-versions в директории gdk требуемая версия указана в списке первой:

ruby 2.7.4 3.0.2

Пропала подсветка в консоли и не доступна команда gdk#

ОС: WSL (Ubuntu 20.04 LTS)

Проблема:

После перезагрузки консоли для работы в окружении WSL пропала подсветка в консоли и не доступна команда gdk:

Решение:

Если ранее была установлена переменная окружения FOSS_ONLY в файле ~/.bash_profile, установите переменную в файле ~/.bashrc.

Для исправления проблемы удалите прошлый файл, если там прописана только FOSS_ONLY, и пропишите эту переменную в ~/.bashrc.

# Удалить прошлую вставку переменной FOSS_ONLY
rm ~/.bash_profile

# Добавить в другой файл переменную FOSS_ONLY
echo -e "\nexport FOSS_ONLY=1" >> ~/.bashrc

WSL потребляет много оперативной памяти#

ОС: WSL (Ubuntu 20.04 LTS)

Решение:

Создайте файл %UserProfile%\.wslconfig со следующим содержимым (можно отрегулировать выделение памяти и по-другому) и перезагрузите WSL:

[wsl2]
memory=16GB
swap=8GB

После запуска команды make bootstrap (для установки GDK) отображается ошибка#

ОС: WSL (Ubuntu 20.04 LTS)

Ошибка:

asdf library 'uuid' is required for E2FS UUID

Решение:

Установите ненайденную библиотеку командой sudo apt install uuid-dev.

При установке GitLab возникает ошибка при попытке скачать файл из Git LFS#

ОС: WSL (Ubuntu 20.04 LTS)

Ошибка:

certificate signed by unknown authority

Решение:

Установите переменную окружения export GIT_SSL_NO_VERIFY=1 для отключения проверки сертификатов.