Сведения о миграции репозитория с помощью GitHub Enterprise Importer
Можно перенести отдельные репозитории или все репозитории из экземпляра Сервера BitBucket с помощью GitHub CLI.
В настоящее время миграция с Bitbucket Server с API GitHub не поддерживается.
Необходимые компоненты
- Настоятельно рекомендуется выполнить пробную версию миграции и завершить рабочую миграцию в ближайшее время. Дополнительные сведения о пробных запусках см. в разделе "Обзор миграции с Bitbucket Server на GitHub Enterprise Cloud".
- Убедитесь, что вы понимаете данные, которые будут перенесены, и известные ограничения поддержки импорта. Дополнительные сведения см. в разделе "Сведения о миграции с Bitbucket Server на GitHub Enterprise Cloud".
- Хотя и не требуется, рекомендуется остановить работу во время рабочей миграции. Importer не поддерживает разностную миграцию, поэтому любые изменения, которые происходят во время миграции, не будут переноситься. Если вы решили не останавливать работу во время рабочей миграции, необходимо вручную перенести эти изменения.
- Для целевой организации на GitHub.comнеобходимо быть владелец организации или иметь роль миграции. Дополнительные сведения см. в разделе Управление доступом к миграции с сервера Bitbucket.
- Вам потребуется имя пользователя и пароль для учетной записи Сервера Bitbucket с разрешениями администратора или суперадминистратором.
Шаг 1. Установка BBS2GH extension of the GitHub CLI
Если это первая миграция, необходимо установить BBS2GH extension of the GitHub CLI. Дополнительные сведения о GitHub CLIсм. в разделе "Сведения о GitHub CLI".
Кроме того, можно скачать автономный двоичный файл на странице выпусков для github/gh-bbs2gh
репозитория. Этот двоичный gh
файл можно запускать напрямую без префикса.
-
Установите GitHub CLI. Инструкции по установке для GitHub CLI см. в репозитории GitHub CLI.
Note
Вам нужна версия 2.4.0 или более позднюю версию GitHub CLI. Вы можете проверить версию, установленную
gh --version
с помощью команды. -
Установите BBS2GH extension.
Shell gh extension install github/gh-bbs2gh
gh extension install github/gh-bbs2gh
В любое время, когда вам нужна помощь в BBS2GH extension, можно использовать --help
флаг с помощью команды. Например, gh bbs2gh --help
перечислит все доступные команды и gh bbs2gh migrate-repo --help
отобразит список всех параметров, доступных для migrate-repo
команды.
Шаг 2. Обновление BBS2GH extension of the GitHub CLI
Данные BBS2GH extension of the GitHub CLI обновляются еженедельно. Чтобы убедиться, что вы используете последнюю версию, обновите расширение.
gh extension upgrade github/gh-bbs2gh
gh extension upgrade github/gh-bbs2gh
Шаг 3. Задание переменных среды
Прежде чем использовать BBS2GH extension для переноса на GitHub Enterprise Cloud, необходимо создать personal access token для доступа к целевой организации, а затем задать personal access token в качестве переменной среды.
Кроме того, необходимо задать переменные среды для имени пользователя и пароля сервера Bitbucket, а если экземпляр Сервера Bitbucket работает в Windows, пароль SMB.
-
Создайте и запишите personal access token (classic), которая будет проходить проверку подлинности для целевой организации на GitHub Enterprise Cloud, убедившись, что маркер соответствует всем требованиям. Дополнительные сведения см. в разделе Управление доступом к миграции с сервера Bitbucket.
-
Задайте переменные среды, заменив TOKEN данными personal access token, записанных выше, USERNAME с именем пользователя учетной записи Bitbucket Server с правами администратора или суперадминистратором и паролем для учетной записи Bitbucket Server.
-
Если вы используете терминал, используйте
export
команду.Shell export GH_PAT="TOKEN" export BBS_USERNAME="USERNAME" export BBS_PASSWORD="PASSWORD" # If your Bitbucket Server instance runs on Windows export SMB_PASSWORD="PASSWORD"
export GH_PAT="TOKEN" export BBS_USERNAME="USERNAME" export BBS_PASSWORD="PASSWORD" # If your Bitbucket Server instance runs on Windows export SMB_PASSWORD="PASSWORD"
-
Если вы используете PowerShell, используйте
$env
команду.Shell $env:GH_PAT="TOKEN" $env:BBS_USERNAME="USERNAME" $env:BBS_PASSWORD="PASSWORD" # If your Bitbucket Server instance runs on Windows $env:SMB_PASSWORD="PASSWORD"
$env:GH_PAT="TOKEN" $env:BBS_USERNAME="USERNAME" $env:BBS_PASSWORD="PASSWORD" # If your Bitbucket Server instance runs on Windows $env:SMB_PASSWORD="PASSWORD"
-
-
Если вы переносите данные GitHub Enterprise Cloud с размещением данных, задайте переменную среды для базового URL-адреса API для вашего предприятия. Например:
Shell export TARGET_API_URL="https://api.octocorp.ghe.com"
export TARGET_API_URL="https://api.octocorp.ghe.com"
Эта переменная будет использоваться с параметром
--target-api-url
в командах, выполняемых с помощью GitHub CLI.
Шаг 4. Настройка хранилища BLOB-объектов
Так как многие экземпляры сервера Bitbucket сидят за брандмауэрами, GitHub CLI использует хранилище BLOB-объектов в качестве промежуточного расположения для хранения данных, доступных из Интернета.
Сначала вы создайте архив данных, которые вы хотите перенести и отправить данные в хранилище BLOB-объектов за брандмауэром.
GitHub CLI поддерживает следующие поставщики хранилища BLOB-объектов:
- Amazon Web Services (AWS) S3
- хранилище BLOB-объектов Azure
Прежде чем запустить миграцию, необходимо настроить контейнер хранилища с выбранным поставщиком облачных служб для хранения данных.
Настройка контейнера хранилища AWS S3
В AWS настройте контейнер S3. Дополнительные сведения см. в разделе "Создание контейнера " в документации ПО AWS.
Вам также потребуется ключ доступа AWS и секретный ключ со следующими разрешениями:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucketMultipartUploads",
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:DeleteObject",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::github-migration-bucket",
"arn:aws:s3:::github-migration-bucket/*"
]
}
]
}
Note
GitHub Enterprise Importer не удаляет архив из AWS после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в разделе Настройка конфигурации жизненного цикла в контейнере в документации AWS.
Когда вы будете готовы к миграции, вам потребуется предоставить учетные данные AWS в GitHub CLI: регион, ключ доступа, секретный ключ и маркер сеанса (при необходимости). Их можно передать в качестве аргументов или задать переменные среды, называемые AWS_REGION
, и AWS_SESSION_TOKEN``AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY
.
Кроме того, необходимо передать имя контейнера S3 с помощью аргумента --aws-bucket-name
.
Настройка учетной записи хранения Хранилище BLOB-объектов Azure
В Azure создайте учетную запись хранения и запишите строка подключения. Дополнительные сведения см. в разделе "Управление ключами доступа к учетной записи хранения" в Документация Майкрософт.
Note
GitHub Enterprise Importer не удаляет архив из Хранилище BLOB-объектов Azure после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в статье "Оптимизация затрат путем автоматического управления жизненным циклом данных в Документация Майкрософт".
Когда вы будете готовы выполнить миграцию, вы можете передать строка подключения в GitHub CLI в качестве аргумента или передать его с помощью переменной AZURE_STORAGE_CONNECTION_STRING
среды.
Разрешение сетевого доступа
Если вы настроили правила брандмауэра в учетной записи хранения, убедитесь, что у вас есть доступ к диапазонам IP-адресов для назначения миграции. См. раздел "Управление доступом к миграции с сервера Bitbucket".
Шаг 5. Перенос репозитория
Репозитории можно перенести с gh bbs2gh migrate-repo
помощью команды.
При переносе репозитория по умолчанию BBS2GH extension of the GitHub CLI выполняет следующие действия:
- Подключается к экземпляру Сервера Bitbucket и создает архив миграции для каждого репозитория.
- Загружает архив миграции из экземпляра Bitbucket Server на компьютер, на котором выполняется BBS2GH extension of the GitHub CLI, с помощью SFTP (Linux) или SMB (Windows)
- Отправляет архивы миграции в выбранный поставщик хранилища BLOB-объектов.
- Начинает миграцию в GitHub Enterprise Cloud, используя URL-адреса архивов, хранящихся в поставщике хранилища BLOB-объектов.
- Удаляет архив миграции с локального компьютера. (После завершения миграции необходимо удалить архив из поставщика хранилища BLOB-объектов вручную.)
Кроме того, можно использовать GitHub CLI для создания архива, скачивания архива вручную, а затем использовать GitHub CLI для продолжения миграции.
Разрешение GitHub CLI для скачивания архива миграции
Чтобы перенести один репозиторий, используйте gh bbs2gh migrate-repo
команду.
gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \ --bbs-project PROJECT --bbs-repo CURRENT-NAME \ --github-org DESTINATION --github-repo NEW-NAME \ # If you are migrating to GHE.com: --target-api-url TARGET-API-URL # If your Bitbucket Server instance runs on Linux: --ssh-user SSH-USER --ssh-private-key PATH-TO-KEY # If your Bitbucket Server instance runs on Windows: --smb-user SMB-USER # If you're using AWS S3 as your blob storage provider: --aws-bucket-name AWS-BUCKET-NAME # If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer: --archive-download-host ARCHIVE-DOWNLOAD-HOST
gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \
--bbs-project PROJECT --bbs-repo CURRENT-NAME \
--github-org DESTINATION --github-repo NEW-NAME \
# If you are migrating to GHE.com:
--target-api-url TARGET-API-URL
# If your Bitbucket Server instance runs on Linux:
--ssh-user SSH-USER --ssh-private-key PATH-TO-KEY
# If your Bitbucket Server instance runs on Windows:
--smb-user SMB-USER
# If you're using AWS S3 as your blob storage provider:
--aws-bucket-name AWS-BUCKET-NAME
# If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer:
--archive-download-host ARCHIVE-DOWNLOAD-HOST
Замените заполнители в приведенной выше команде следующими значениями.
Заполнитель | Значение |
---|---|
BBS-SERVER-URL | URL-адрес экземпляра сервера Bitbucket |
PROJECT | Ключ для проекта Bitbucket Server репозитория, который требуется перенести |
CURRENT-NAME | Имя репозитория, который требуется перенести |
НАЗНАЧЕНИЕ | Имя целевой организации |
NEW-NAME | Имя, которое должен иметь перенесенный репозиторий. |
TARGET-API-URL | Базовый URL-адрес API для поддомена вашего предприятия GHE.com. Например: https://api.octocorp.ghe.com . |
SSH-USER | Если экземпляр сервера Bitbucket работает в Linux, имя пользователя, которое будет использоваться при подключении к серверу Bitbucket через SFTP |
PATH-TO-KEY | Если экземпляр Bitbucket Server выполняется в Linux, путь к закрытому ключу SSH, например ~/.ssh/id_rsa . Требования к ключу SSH см. в разделе "Управление доступом к миграции с сервера Bitbucket". |
S МБ-USER | Если экземпляр Bitbucket Server выполняется в Windows, имя пользователя, используемое при подключении к серверу Bitbucket через S МБ |
AWS-BUCKET-NAME | Имя контейнера для контейнера AWS S3 |
ARCHIVE-DOWNLOAD-HOST | Узел, используемый для подключения к экземпляру Bitbucket Server или Data Center через SSH или S МБ. Это необходимо указать, только если вы используете кластер Bitbucket Data Center или сервер Bitbucket находится за подсистемой балансировки нагрузки. |
Note
Если вы получаете сообщение Renci.SshNet
об ошибке, интерфейс командной строки имеет проблемы с подключением SFTP к серверу для скачивания архива миграции. Сведения об устранении этих проблем см. в разделе "Устранение неполадок миграции с помощью GitHub Enterprise Importer".
Скачивание архива миграции вручную
По умолчанию BBS2GH extension of the GitHub CLI выполняет всю миграцию, включая скачивание архива миграции из экземпляра сервера Bitbucket с помощью SFTP или SMB.
Однако некоторые клиенты предпочитают скачать архив миграции вручную, так как сервер не предлагает доступ К SFTP, например. В этом случае можно использовать GitHub CLI для создания архива, скачивания архива вручную, а затем использовать GitHub CLI для продолжения миграции.
Этот шаг необходимо выполнить на компьютере, к которому можно получить доступ:
- Экземпляр сервера Bitbucket через HTTPS
- Выбранный поставщик хранилища BLOB-объектов
Сначала используйте gh bbs2gh migrate-repo
команду только со следующими аргументами:
gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \ --bbs-project PROJECT \ --bbs-repo CURRENT-NAME
gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \
--bbs-project PROJECT \
--bbs-repo CURRENT-NAME
Замените заполнители в приведенной выше команде следующими значениями.
Заполнитель | Значение |
---|---|
BBS-SERVER-URL | URL-адрес экземпляра сервера Bitbucket |
PROJECT | Ключ для проекта Bitbucket Server репозитория, который требуется перенести |
CURRENT-NAME | Имя репозитория, который требуется перенести |
Архив миграции будет создан, и его путь будет напечатан в выходных данных команды:
[12:14] [INFO] Export completed. Your migration archive should be ready on your
instance at $BITBUCKET_SHARED_HOME/data/migration/export/Bitbucket_export_9.tar
Как правило, $BITBUCKET_SHARED_HOME
для Linux и C:\Atlassian\ApplicationData\Bitbucket\Shared
Windows это может отличаться /var/atlassian/application-data/bitbucket/shared
в зависимости от конфигурации сервера. Сведения о том, как определить общий домашний каталог, см. в разделе "Устранение неполадок миграции с помощью GitHub Enterprise Importer".
Скачайте архив миграции из экземпляра Сервера Bitbucket и сохраните архив на компьютере, где выполняется GitHub CLI.
Чтобы импортировать архив миграции в GitHub, используйте gh bbs2gh migrate-repo
команду еще раз с другим набором аргументов:
gh bbs2gh migrate-repo --archive-path ARCHIVE-PATH \ --github-org DESTINATION --github-repo NEW-NAME \ --bbs-server-url BBS-SERVER-URL \ --bbs-project PROJECT \ --bbs-repo CURRENT-NAME \ # If you're using AWS S3 as your blob storage provider: --aws-bucket-name AWS-BUCKET-NAME # If you are migrating to GHE.com: --target-api-url TARGET-API-URL
gh bbs2gh migrate-repo --archive-path ARCHIVE-PATH \
--github-org DESTINATION --github-repo NEW-NAME \
--bbs-server-url BBS-SERVER-URL \
--bbs-project PROJECT \
--bbs-repo CURRENT-NAME \
# If you're using AWS S3 as your blob storage provider:
--aws-bucket-name AWS-BUCKET-NAME
# If you are migrating to GHE.com:
--target-api-url TARGET-API-URL
Замените заполнители в приведенной выше команде следующими значениями.
Заполнитель | Значение |
---|---|
ARCHIVE-PATH | Путь к архиву миграции сервера Bitbucket, скачанного из вашего экземпляра |
НАЗНАЧЕНИЕ | Имя целевой организации |
NEW-NAME | Имя, которое должен иметь перенесенный репозиторий. |
BBS-SERVER-URL | URL-адрес экземпляра сервера Bitbucket |
PROJECT | Ключ для проекта Bitbucket Server репозитория, который требуется перенести |
CURRENT-NAME | Имя репозитория, который требуется перенести |
AWS-BUCKET-NAME | Имя контейнера для контейнера AWS S3 |
TARGET-API-URL | Базовый URL-адрес API для поддомена вашего предприятия GHE.com. Например: https://api.octocorp.ghe.com . |
Отмена миграции
Если вы хотите отменить миграцию, используйте abort-migration
команду, заменив идентификатор MIGRATION-ID возвращенным идентификатором migrate-repo
.
gh bb2gh abort-migration --migration-id MIGRATION-ID
gh bb2gh abort-migration --migration-id MIGRATION-ID
Шаг 6. Проверка миграции и проверка журнала ошибок
По завершении миграции рекомендуется просмотреть журнал миграции. Дополнительные сведения см. в разделе Доступ к журналам миграции для GitHub Enterprise Importer.
Рекомендуется просмотреть перенесенные репозитории для проверки звука.
Шаг 7. Перенос нескольких репозиториев
Если вы хотите перенести несколько репозиториев в GitHub Enterprise Cloud одновременно, используйте GitHub CLI для создания скрипта миграции. Результирующий скрипт будет содержать список команд миграции, по одному на репозиторий.
Note
Создание скрипта выводит скрипт PowerShell. Если вы используете терминал, вам потребуется вывести сценарий с .ps1
расширением файла и установить PowerShell для Mac[ или Linux, ](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.2)чтобы запустить его.
Создание скрипта миграции
Этот шаг необходимо выполнить с компьютера, который может получить доступ к экземпляру сервера Bitbucket через HTTPS.
Чтобы создать скрипт миграции, выполните gh bbs2gh generate-script
команду.
gh bbs2gh generate-script --bbs-server-url BBS-SERVER-URL \ --github-org DESTINATION \ --output FILENAME \ # If you are migrating to GHE.com: --target-api-url TARGET-API-URL # If your Bitbucket Server instance runs on Linux: --ssh-user SSH-USER --ssh-private-key PATH-TO-KEY # If your Bitbucket Server instance runs on Windows: --smb-user SMB-USER # If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer: --archive-download-host ARCHIVE-DOWNLOAD-HOST
gh bbs2gh generate-script --bbs-server-url BBS-SERVER-URL \
--github-org DESTINATION \
--output FILENAME \
# If you are migrating to GHE.com:
--target-api-url TARGET-API-URL
# If your Bitbucket Server instance runs on Linux:
--ssh-user SSH-USER --ssh-private-key PATH-TO-KEY
# If your Bitbucket Server instance runs on Windows:
--smb-user SMB-USER
# If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer:
--archive-download-host ARCHIVE-DOWNLOAD-HOST
Если вы хотите, чтобы скрипт скачал журнал миграции для каждого перенесенного репозитория, добавьте --download-migration-logs
флаг. Дополнительные сведения о журналах миграции см. в разделе "Доступ к журналам миграции для GitHub Enterprise Importer".
Замените заполнители в приведенной выше команде следующими значениями.
Заполнитель | Значение |
---|---|
BBS-SERVER-URL | URL-адрес экземпляра сервера Bitbucket |
НАЗНАЧЕНИЕ | Имя целевой организации |
FILENAME | Имя файла для результирующего скрипта миграции Если вы используете терминал, используйте .ps1 расширение файла в качестве созданного скрипта, чтобы запустить PowerShell. Вы можете установить PowerShell для Mac или Linux. |
TARGET-API-URL | Базовый URL-адрес API для поддомена вашего предприятия GHE.com. Например: https://api.octocorp.ghe.com . |
SSH-USER | Если экземпляр сервера Bitbucket работает в Linux, имя пользователя, которое будет использоваться при подключении к серверу Bitbucket через SFTP |
PATH-TO-KEY | Если экземпляр Bitbucket Server выполняется в Linux, путь к закрытому ключу SSH, например ~/.ssh/id_rsa . Требования к ключу SSH см. в разделе "Управление доступом к миграции с сервера Bitbucket". |
S МБ-USER | Если экземпляр Bitbucket Server выполняется в Windows, имя пользователя, используемое при подключении к серверу Bitbucket через S МБ |
ARCHIVE-DOWNLOAD-HOST | Узел, используемый для подключения к экземпляру Bitbucket Server или Data Center через SSH или S МБ. Это необходимо указать, только если вы используете кластер Bitbucket Data Center или сервер Bitbucket находится за подсистемой балансировки нагрузки. |
Просмотр скрипта миграции
После создания скрипта просмотрите файл и, при необходимости, измените скрипт.
- Если есть какие-либо репозитории, которые вы не хотите перенести, удалить или закомментировать соответствующие строки.
- По умолчанию имена репозитория в GitHub следуют соглашению
projectKey-repositoryName
. Например, репозиторий Сервера Bitbucket с именемairports
, который является частьюopen-source
проекта, который имеет ключOS
, будет вызыватьсяOS-airports
в GitHub. Если в GitHub, измените значение соответствующего--github-repo
флага.
Если вы скачали BBS2GH как автономный двоичный файл, а не как расширение для GitHub CLI, вам потребуется обновить созданный скрипт, чтобы запустить двоичный файл вместо gh bbs2gh
него.
Запуск скрипта миграции
Чтобы перенести репозитории, запустите созданный скрипт.
Перед выполнением скрипта необходимо задать дополнительные переменные среды для проверки подлинности в поставщике хранилища BLOB-объектов.
- Для AWS S3 задайте следующие переменные среды.
AWS_ACCESS_KEY_ID
: идентификатор ключа доступа для контейнераAWS_SECRET_ACCESS_KEY
: секретный ключ для контейнераAWS_REGION
: регион AWS, в котором находится контейнерAWS_SESSION_TOKEN
: маркер сеанса, если вы используете временные учетные данные AWS (см. сведения об использовании временных учетных данных с ресурсами AWS в документации AWS).
- Для Хранилище BLOB-объектов Azure задайте
AZURE_STORAGE_CONNECTION_STRING
строка подключения для учетной записи хранения Azure.
Поддерживаются только строка подключения с помощью ключей доступа к учетной записи хранения. строки Подключение ion, использующие подписанные URL-адреса (SAS), не поддерживаются. Дополнительные сведения о ключах доступа к учетной записи хранения см. в статье "Управление ключами доступа к учетной записи хранения" в документации Azure.