Массовый импорт из GitLab
Функционал доступен только в Self-Hosted версиях сервиса
Для бесшовной миграции из GitLab в Gitflic существует механизм импорта. Для импорта отдельного проекта необходимо воспользоваться данной инструкцией. Для миграции большого числа проектов, пользователей, групп и их настроек рекомендуется воспользоваться одним из способов массовой миграции:
- Миграция при помощи публичного API. Данный способ позволяет мигрировать как с облачной так и локальной инсталляции GitLab, но импортировать возможно только проекты и пользователей, участвующих в них.
- Низкоуровневая миграция. Данный способ требует доступа к базе данных, на которой работает инстанс GitLab, но позволяет экспортировать больше данных.
Миграция при помощи публичного GitLab API
Попасть на страницу массовой миграции из GitLab можно, нажав на кнопку плюса в правом верхнем углу интерфейса. Выбрав опцию Импорт проекта откроется страница с созданием импорта. Перейдя на вкладку Множественный импорт с GitLab станет доступен интерфейс миграции.
Авторизация в GitLab
Данный тип миграции осуществляется при помощи GitLab Access Token. Необходимо использовать токен, у которого в наборе прав присутствует scope api
.
После указания URL-адрес хоста (например https://gitlab.com или иного в случае миграции с локальной инсталляции GitLab), токена доступа и нажатия на кнопку аутентифицировать отобразиться список проектов, доступных пользователю, чей токен использовался для авторизации.
Настройка проектов для миграции
У каждого найденного проекта можно изменить следующие параметры, с которыми эти проекты будут перенесены в GitFlic:
- Будущего владельца
- Название
- Алиас
- Приватность
По умолчанию, в качестве владельца проекта устанавливается пользователь GitFlic, который осуществляет миграцию. Если в качестве владельца необходимо указать команду или компанию, то их необходимо создать заранее - до процесса миграции.
Кроме того, присутствует возможность выбрать набор полей, которые будут мигрированы внутри каждого проекта - участники, запросы на слияния, проблемы, конвейеры, релизы и некоторые настройки проекта.
После выбора проектов для миграции (выбор осуществляется при помощи чек-бокса напротив каждого проекта) и нажатия кнопки импортировать будет начат процесс миграции
Процесс миграции
После начала миграции откроется страница с историей импортов, на которой будет отображен список проектов, выбранных для миграции. Статус каждого проекта отображает состояние процесса миграции. В случае возникновения ошибок они будут отображены здесь же.
Низкоуровневая миграция
Поддерживаемые версии GitLab
- Для этого способа миграции требуется версия GitLab не ниже 14.0.
- Рекомендуется выполнять миграцию с версии GitLab не ниже 17.0
Данный вид миграции осуществляется при помощи взаимодействия с GitFlic CLI
, которая поставляется в одном архиве с GitFlic
.
Предварительные условия
Перед осуществлением миграции необходимо убедиться в том что :
1. В конфигурационный файл GitFlic (application.properties
) добавлены параметры:
Параметр | Наличие | Тип | Описание |
---|---|---|---|
export.gitlab |
Обязательно | Boolean | Параметр, активирующий функционал миграции. Необходимо установить значение true |
spring.datasource.gitlab.url |
Обязательно | String | URL для подключения к базе данных GitLab |
spring.datasource.gitlab.username |
Обязательно | String | Имя пользователя для подключения к базе данных GitLab |
spring.datasource.gitlab.password |
Обязательно | String | Пароль для подключения к базе данных GitLab |
gitlab.version |
Обязательно | Integer | Мажорная версия GitLab. Например, 17 |
gitlab.export.dbKeyBase |
Не обязательно | String | Ключ, с помощью которого шифруются некоторые данные в GitLab. Без указания ключа не будут импортированы проекты-зеркала, вебхуки и переменные CI/CD. В случае инсталлляции GitLab через omnibus этот ключ можно найти по пути /etc/gitlab/gitlab-secrets.json |
2. CLI
запускается пользователем, который имеет права:
- на чтение базы данных GitLab
- на запись статических директорий (
/var/gitflic/
) и базы данных GitFlic
3. Подготовлена пустая база данных для переноса данных из GitLab. Миграция осуществляется только на чистую базу данных.
Запуск GitFlic CLI
1. Распакуйте архив с ПО GitFlic в любую удобную директорию
unzip gitflic_4.0.0_free_onpremise.zip
2. Перейдите в директорию cli внутри распакованного архива
cd /path/to/arhive/cli
3. Сделайте скрипт gitflic-cli.sh исполняемым
chmod +x ./gitflic-cli.sh
4. Для запуска GitFlic CLI воспользуйтесь следующей командой, добавив в качестве опции путь до конфигурационного файла вашего инстанса GitFlic:
./gitflic-cli.sh /путь/до/application.properties
Экспорт данных из GitLab
Для экспорта данных из GitLab необходимо выполнить команду:
export gitlab
После выполнения команды, CLI
запросит путь до директории, в которую будет сохранен результат экспорта - архив gitflic-models
. Данный путь можно не указывать, тогда результат экспорта будет сохранен в ту же директорию, в которой расположен GitFlic CLI
. Этот путь можно передать сразу же в команде экспорта при помощи параметра:
--output-path <путь/до/директории>`
Короткая версия параметра
-o <путь/до/директории>
Далее программа запросит путь до конфигурационного файла GitLab - gitlab.rb
или gitlab.yaml
. Указание данного файла не обязательно, но из него происходит экспорт LDAP подключений. Если пропустить данный вопрос, то пользователи LDAP будут добавлены в GitFlic без привязки к LDAP подключению. Этот путь можно передать сразу же в команде экспорта при помощи параметра:
--config-path <путь/до/файла>
Короткая версия параметра
-c <путь/до/файла>
Выполнить команду экспорта без указания конфигурационного файла GitLab можно при помощи флага -n
Пример команды для экспорта данных
export gitlab \
--output-path /home/adminuser/gitLab-import \
--config-path /home/gitlab/gitlab.rb
В конце успешного экспорта в терминале появится соответствующая запись об этом.
Импорт данных в GitFlic
Для импорта данных в GitFlic необходимо выполнить команду:
import \
--archive-path <путь/до/архива> \
--repository-dir-path <путь/до/директории>
В параметре --archive-path
необходимо указать путь до архива gitflic-models
, который является результатом выполнения экспорта из GitLab.
Короткие версии параметра
--zip <путь/до/архива>
или-f <путь/до/архива>
Параметр -repository-dir-path
указывает на директорию, содержащую репозитории из инстанса GitLab. Как правило, это путь /var/opt/gitlab/git-data/repositories/
.
Для расширенных логов необходимо указать параметр --verbose
. Расширенные логи полезны для обнаружения проблем при импорте данных. Рекомендуется выполнять команду импорту с этим параметром.
Короткая версия параметра
-v
Пример команды для импорта данных
import \
-v \
--repository-dir-path /var/opt/gitlab/git-data/repositories/ \
--archive-path /home/adminuser/gitLab-import/gitlic-models-1742204395.zip
В конце успешного импорта в терминале появится соответствующая запись об этом.
Всем пользователям, которые будут мигрированы в GitFlic, будет установлен временный пароль. В директории, в которой находится GitFlic CLI
, будет создан файл generated-password.txt
содержащий временные пароли. Сразу после авторизации по временному паролю, всем пользователем необходимо сменить пароль на постоянный.