Перейти к содержанию

Массовый импорт из GitLab

Функционал доступен только в Self-Hosted версиях сервиса


Для бесшовной миграции из GitLab в Gitflic существует механизм импорта. Для импорта отдельного проекта необходимо воспользоваться данной инструкцией. Для миграции большого числа проектов, пользователей, групп и их настроек рекомендуется воспользоваться одним из способов массовой миграции:

  • Миграция при помощи публичного API. Данный способ позволяет мигрировать как с облачной так и локальной инсталляции GitLab, но импортировать возможно только проекты и пользователей, участвующих в них.
  • Низкоуровневая миграция. Данный способ требует доступа к базе данных, на которой работает инстанс GitLab, но позволяет экспортировать больше данных.

Миграция при помощи публичного GitLab API

Попасть на страницу массовой миграции из GitLab можно, нажав на кнопку плюса в правом верхнем углу интерфейса. Выбрав опцию Импорт проекта откроется страница с созданием импорта. Перейдя на вкладку Множественный импорт с 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 содержащий временные пароли. Сразу после авторизации по временному паролю, всем пользователем необходимо сменить пароль на постоянный.