Skip to main content

Миграция данных на #REF! Enterprise Server

После создания архива миграции можно импортировать данные в целевой экземпляр GitHub Enterprise Server. Вы сможете просмотреть изменения для потенциальных конфликтов, прежде чем окончательно применить изменения к целевому экземпляру.

Подготовка перенесенных данных

  1. С помощью команды скопируйте архив миграции, созданный из исходного экземпляра или организации, в целевой объект GitHub Enterprise Server:

    scp -P 122 PATH-TO-MIGRATION-GUID.tar.gz admin@HOSTNAME:/home/admin/
    
  2. SSH в целевом экземпляре GitHub Enterprise Server. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

    ssh -p 122 admin@HOSTNAME
    
  3. Убедитесь, что архив миграции имеет достаточные разрешения на чтение.

    chmod 644 /home/admin/MIGRATION-GUID.tar.gz
    
  4. Используйте команду , чтобы подготовить архив для импорта в целевой экземпляр и создать новый уникальный идентификатор миграции, который будет использоваться в последующих шагах:

    ghe-migrator prepare /home/admin/MIGRATION-GUID.tar.gz
    
    • Чтобы начать новую попытку импорта, запустите еще раз и получите новый уникальный идентификатор миграции.
    • Чтобы указать, где следует выполнить подготовку файлов миграции, добавьте команду с --staging-path=/full/staging/path. По умолчанию — /data/user/tmp.

Создание списка конфликтов миграции

  1. Используя команду с уникальным идентификатором миграции, создайте файл conflicts.csv:

    ghe-migrator conflicts -g MIGRATION-GUID > conflicts.csv
    
    • Если не сообщается о конфликтах, можно безопасно импортировать данные.
  2. При наличии конфликтов с помощью команды скопируйте conflicts.csv на локальный компьютер:

    scp -P 122 admin@HOSTNAME:conflicts.csv ~/Desktop
    
  3. Продолжайте устранять конфликты миграции или настраивать пользовательские сопоставления.

Просмотр конфликтов миграции

  1. Откройте conflicts.csv с помощью текстового редактора или программного обеспечения для работы с электронными таблицами, совместимого с форматом CSV.
  2. Руководствуясь приведенными ниже примерами и справочными таблицами, просмотрите файл conflicts.csv, чтобы убедиться, что при импорте будут выполнены соответствующие действия.

Файл conflicts.csv содержит карту миграции конфликтов и рекомендуемые действия. Карта миграции содержит сведения о том, какие данные переносятся из источника и как данные будут применены к целевому объекту.

model_namesource_urltarget_urlrecommended_action
userhttps://example-gh.source/octocathttps://example-gh.target/octocatmap
organizationhttps://example-gh.source/octo-orghttps://example-gh.target/octo-orgmap
repositoryhttps://example-gh.source/octo-org/widgetshttps://example-gh.target/octo-org/widgetsrename
teamhttps://example-gh.source/orgs/octo-org/teams/adminshttps://example-gh.target/orgs/octo-org/teams/adminsmerge
projecthttps://example-gh.source/octo-org/widgets/projects/1https://example-gh.target/octo-org/projects/1merge

Каждая строка в conflicts.csv предоставляет следующие сведения:

ИмяОписание
model_nameТип изменяемых данных.
source_urlИсходный URL-адрес данных.
target_urlОжидаемый целевой URL-адрес данных.
recommended_actionПредпочтительное действие, которое выполнит при импорте данных.

Возможные сопоставления для каждого типа записи

Существует несколько различных действий сопоставления, которые может выполнить при передаче данных:

actionОписаниеПрименимые модели
import(по умолчанию) Данные из источника импортируются в целевой объект.Все типы записей
mapВместо создания новой модели на основе исходных данных используется существующая запись в целевом объекте. Полезно для импорта репозитория в существующую организацию или сопоставления удостоверений пользователей в целевом объекте с удостоверениями пользователей в источнике.Пользователи, организации, проекты
renameДанные из источника переименовываются, а затем копируются в целевой объект.Пользователи, организации, репозитории, проекты
map_or_renameЕсли целевой объект существует, данные сопоставляются с ним. В противном случае импортированная модель переименовывается.Пользователи
mergeДанные из источника совмещаются с существующими данными в целевом объекте.Teams, проекты

Мы настоятельно рекомендуем просмотреть файл conflicts.csv и использовать , чтобы убедиться, что выполняются нужные действия. Если все выглядит хорошо, можно продолжить.

Устранение конфликтов миграции или настройка пользовательских сопоставлений

Если вы считаете, что выполнит неправильное изменение, можно внести исправления, изменив данные в conflicts.csv. Вы можете внести изменения в любую из строк в conflicts.csv.

Например, предположим, что пользователь из источника сопоставляется с целевым объектом.

model_namesource_urltarget_urlrecommended_action
userhttps://example-gh.source/octocathttps://example-gh.target/octocatmap

Вы можете сопоставить пользователя с другим пользователем в целевом объекте. Предположим, вы знаете, что на самом деле должен быть в целевом объекте. Столбец можно изменить в conflicts.csv , чтобы ссылаться на .

model_namesource_urltarget_urlrecommended_action
userhttps://example-gh.source/octocathttps://example-gh.target/monalisamap

В качестве другого примера, если вы хотите переименовать репозиторий в целевой экземпляр, измените его на и на .

model_namesource_urltarget_urlrecommended_action
repositoryhttps://example-gh.source/octo-org/widgetshttps://example-gh.target/octo-org/amazing-widgetsrename

Добавление пользовательских сопоставлений

Распространенный сценарий во время миграции заключается в том, что у имена перенесенных пользователей в целевом объекте будут отличаться от тех, что назначены им в источнике.

Имея список имен пользователей в источнике и список имен пользователей в целевом объекте, вы можете создать CSV-файл с пользовательскими сопоставлениями, а затем применить его, чтобы имена пользователей и их данные были правильно сопоставлены после миграции.

Вы можете быстро создать CSV-файл пользователей, которые переносятся. Он необходим для применения пользовательских сопоставлений с помощью команды :

ghe-migrator audit -m user -g MIGRATION-GUID > users.csv

Теперь вы можете изменить этот CSV-файл и ввести новый URL-адрес для каждого пользователя, которого вы хотите сопоставить или переименовать, а затем обновить четвертый столбец, чтобы выполнить или .

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

model_namesource_urltarget_urlstate
userhttps://example-gh.source/octocathttps://example-gh.target/monalisarename

Один и тот же процесс можно использовать для создания сопоставлений для каждой записи, поддерживающей пользовательские сопоставления. Дополнительные сведения см. в таблице возможных сопоставлений записей.

Применение измененных данных миграции

  1. После внесения изменений используйте команду для применения измененного файла conflicts.csv (или любого другого файла .csv сопоставлений в правильном формате) к целевому экземпляру:

    scp -P 122 ~/Desktop/conflicts.csv admin@HOSTNAME:/home/admin/
    
  2. Повторно сопоставите данные миграции с помощью команды , передав путь к измененным файлу .csv и уникальному идентификатору миграции:

    ghe-migrator map -i conflicts.csv -g MIGRATION-GUID
    
  3. Если команда сообщит, что конфликты по-прежнему существуют, снова выполните процесс разрешения конфликтов миграции.

Применение импортированных данных к GitHub Enterprise Server

  1. SSH в целевом экземпляре GitHub Enterprise Server. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

    ssh -p 122 admin@HOSTNAME
    
  2. С помощью команды запустите процесс импорта. Что вам понадобится:

    • GUID миграции. Дополнительные сведения см. в статье "Подготовка перенесенных данных для импорта в GitHub Enterprise Server".
    • Данные personal access token для проверки подлинности. Используемые данные personal access token используются только для проверки подлинности в качестве администратора сайта и не требуют каких-либо определенных областей или разрешений. Дополнительные сведения см. в разделе AUTOTITLE.
    $ ghe-migrator import /home/admin/MIGRATION-GUID.tar.gz -g MIGRATION-GUID -u USERNAME -p TOKEN
    
    > Starting GitHub::Migrator
    > Import 100% complete /
    
    • Чтобы указать, где следует выполнить подготовку файлов миграции, добавьте команду с --staging-path=/full/staging/path. По умолчанию — /data/user/tmp.

Проверка данных миграции

По умолчанию возвращает каждую запись. Кроме того, это позволяет фильтровать записи по следующим критериям:

  • Типы записей.
  • Состояние записей.

Типы записей соответствуют тем, которые находятся в перенесенных данных.

Фильтры типов записей

Тип записиИмя фильтра
Пользователиuser
Организацииorganization
Репозиторииrepository
Teamsteam
Milestonesmilestone
Проекты (классическая модель)project
Проблемыissue
Комментарии к проблемеissue_comment
Запросы на включение внесенных измененийpull_request
Проверки запросов на включение измененийpull_request_review
Комментарии к фиксацииcommit_comment
Комментарии к проверке запроса на вытягиваниеpull_request_review_comment
Выпускиrelease
Действия, выполняемые для запросов на вытягивание или проблемissue_event
Защищенные ветвиprotected_branch

Фильтры состояния записи

Состояние записиОписание
exportЗапись будет экспортирована.
importЗапись будет импортирована.
mapЗапись будет сопоставлена.
renameЗапись будет сопоставлена.
mergeЗапись будет объединена.
exportedЗапись экспортирована успешно.
importedЗапись импортирована успешно.
mappedЗапись сопоставлена успешно.
renamedЗапись переименована успешно.
mergedЗапись объединена успешно.
failed_exportНе удалось экспортировать запись.
failed_importНе удалось импортировать запись.
failed_mapНе удалось сопоставить запись.
failed_renameНе удалось переименовать запись.
failed_mergeНе удалось объединить запись.

Фильтрация записей аудита

С помощью команды можно отфильтровать данные по типу записи с помощью флага . Аналогичным образом можно отфильтровать состояние импорта с помощью флага . Эта команда выглядит следующим образом:

ghe-migrator audit -m RECORD_TYPE -s STATE -g MIGRATION-GUID

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

$ ghe-migrator audit -m organization,team -s mapped,renamed -g MIGRATION-GUID
> model_name,source_url,target_url,state
> organization,https://gh.source/octo-org/,https://ghe.target/octo-org/,renamed

Настоятельно рекомендуется проводить аудит каждой операции импорта, завершившейся сбоем. Для этого введите:

$ ghe-migrator audit -s failed_import,failed_map,failed_rename,failed_merge -g MIGRATION-GUID
> model_name,source_url,target_url,state
> user,https://gh.source/octocat,https://gh.target/octocat,failed
> repository,https://gh.source/octo-org/octo-project,https://ghe.target/octo-org/octo-project,failed

Если у вас возникли проблемы с неудачными импортами, обратитесь к нам, перейдя по адресу Поддержка GitHub Enterprise.

Завершение импорта в GitHub Enterprise Server

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

Разблокировка репозиториев на целевом экземпляре

  1. SSH в ваш экземпляр GitHub Enterprise Server. Если экземпляр состоит из нескольких узлов, например, если настроен высокий уровень доступности или георепликация, передача осуществляется по SSH в основной узел. При использовании кластера можно использовать для передачи по SSH в любой узел. Замените HOSTNAME именем узла для экземпляра, именем узла или IP-адресом узла. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Разблокируйте все импортированные репозитории с помощью команды ghe-migrator unlock. Вам потребуется GUID миграции:

$ ghe-migrator unlock -g MIGRATION-GUID
> Unlocked octo-org/octo-project

Предупреждение

Если репозиторий содержит рабочие процессы GitHub Actions с помощью триггера , рабочие процессы не будут выполняться автоматически после импорта. Чтобы снова запустить запланированные рабочие процессы, отправьте фиксацию в репозиторий. Дополнительные сведения см. в разделе AUTOTITLE.

Разблокировка репозиториев в источнике

После завершения миграции необходимо разблокировать репозитории в источнике.

Разблокировка репозиториев из организации в GitHub.com

Чтобы разблокировать репозитории в организации GitHub.com, отправьте запрос в конечную точку разблокировки миграции. Что вам понадобится:

  • Маркер доступа для проверки подлинности
  • Уникальный миграции
  • Имя репозитория для разблокировки
curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" -X DELETE \
  -H "Accept: application/vnd.github.wyandotte-preview+json" \
  https://api.github.com/orgs/ORG-NAME/migrations/ID/repos/REPO_NAME/lock

Удаление репозиториев из организации в GitHub.com

После разблокировки репозиториев организации GitHub.com следует удалить каждый репозиторий, перенесенный ранее с помощью конечной точки удаления репозитория. Вам потребуется маркер доступа для проверки подлинности

curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" -X DELETE \
  https://api.github.com/repos/ORG-NAME/REPO_NAME

Разблокировка репозиториев из экземпляра GitHub Enterprise Server

  1. SSH в ваш экземпляр GitHub Enterprise Server. Если экземпляр состоит из нескольких узлов, например, если настроен высокий уровень доступности или георепликация, передача осуществляется по SSH в основной узел. При использовании кластера можно использовать для передачи по SSH в любой узел. Замените HOSTNAME именем узла для экземпляра, именем узла или IP-адресом узла. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Разблокируйте все импортированные репозитории с помощью команды ghe-migrator unlock. Вам потребуется GUID миграции:

$ ghe-migrator unlock -g MIGRATION-GUID
> Unlocked octo-org/octo-project