О миграции GitHub Actions внешнего хранилища
Вы можете мигрировать GitHub Actions внешнее хранилище на новый корсет, аккаунт или регион у того же провайдера при консолидации облачных аккаунтов, выполнении требований по резидентству или реорганизации аренды хранилища.
Миграция работает, потому что GitHub Actions идентифицирует сохранённые объекты по их ключу (пути) внутри ведра или контейнера, а не по корзине или имени аккаунта. Пока вы сохраняете внутреннее раскладывание ключей и обновляете конфигурацию с указанием на новое место, существующие журналы рабочих процессов и артефакты остаются доступны без перебоев.
Considerations
Прежде чем начать, ознакомьтесь с следующими ограничениями. Каждый из них формирует подход к миграции, и несколько из них могут привести к потере данных, если их игнорировать.
- Только у одного и того же провайдера. Эта процедура поддерживает миграции внутри одного типа поставщика хранилища, например, Amazon S3 на Amazon S3, Azure Blob в Azure Blob, Google Cloud Storage в Google Cloud Storage или MinIO в MinIO. Переселения между поставщиками здесь не рассматриваются. Для переселения между провайдерами обращайтесь Поддержка GitHub Enterpriseк .
- Не меняйте метод аутентификации во время миграции. Если вы сейчас используете аутентификацию на основе учетных данных, ваша конфигурация назначения также должна использовать аутентификацию на основе учетных данных. То же са��ое касается OpenID Connect. Переключение метода аутентификации при из��енении конфигурации хранилища может привести к потере данных. Дополнительные сведения см. в разделе Обновление учетных данных для хранилища GitHub Actions. Чтобы изменить метод аутентификации, сначала завершите миграцию хранилища, а затем запланируйте отдельное изменение.
- Раскладка ключей внутри ведра или контейнера должна сохраняться. Ключи объектов (пути) внутри вашего исходного корзина или контейнера должны оставаться идентичными на целевом назначении. Название корзины назначения, учетная запись хранения, регион и другие параметры соединения могут меняться. Вы обновляете их в разделе Консоль управления AT. Большинство нативных инструментов копирования провайдера автоматически сохраняют раскладку ключей при копировании целого корзина или контейнера, но перед переходом проверяют, что назначение совпадает с исходником.
- GitHub Packages имеет дополнительные ограничения. Если вы тоже используете GitHub Packages, ознакомьтесь с GitHub Packages разделом «Соображения » ниже перед началом.
Необходимые условия
- У вас есть доступ администратора сайта к ваш экземпляр GitHub Enterprise Server.
- Вы создали хранилище назначения на том же провайдере, что и источник, в нужном аккаунте, регионе или аренде.
- Пункт назначения.
- Получатель предоставляет ваш экземпляр GitHub Enterprise Server те же права, что и источник. Для необходимых разрешений см. соответствующую статью о конфигурации:
- У вас есть административные учетные данные как для исходника, так и для целевого хранилища, достаточных для чтения всех исходных объектов и записи в адрес.
- У вас есть недавняя резервная копия ваш экземпляр GitHub Enterprise Server. Дополнительные сведения см. в разделе Настройка резервных копий на вашем экземпляре с помощью Backup Utilities.
- Вы репетировали миграцию в условиях подготовки. См. следующий раздел.
Репетиция миграции в условиях подготовки
Перед выполнением миграции против продакшна отрепетируйте полную процедуру на инстансе staging. Предоставьте стадинг GitHub Enterprise Server экземпляра из недавней производственной резервной копии, направьте его на временное местоназначение, которое отражает предполагаемое производственное место, и выполните каждый шаг этой статьи от начала до конца. Дополнительные сведения см. в разделе [AUTOTITLE и Настройка промежуточного экземпляра](/admin/managing-github-actions-for-your-enterprise/advanced-configuration-and-troubleshooting/using-a-staging-environment).
Репетиция постановки подтверждает, что:
- Разрешения со стороны провайдера, доступ к сети и политики на адрес назначения корректны.
- Выбранный вами инструмент копирования успешно работает против репрезентативных объёмо�� данных.
- Ожидаемое количество объектов и общий размер совпадения между источником и назначением.
- Существующие логи запуска рабочих процессов и артефакты можно получить через интерфейс после перехода.
Предупреждение
Ваш инстанс staging должен использовать другое хранилище, чем продакшен. Если вы не измените конфигурацию хранилища, staging instance может записать данные в ваше производственное хранилище и вызвать потерю данных. Дополнительные сведения см. в разделе Использование промежуточной среды.
Выполнение миграции
Выполните следующие действия по порядку. GitHub Actions Можно продолжать обслуживать трафик, пока не включите режим обслуживания.
-
Выполните первоначальное копирование данных. Скопируйте все объекты из исходного источника в назначение с помощью инструмента, нативного для провайдера. Новые объекты, записанные в исходный код во время копирования, будут захвачены финальной дельта-синхронизацией после перехода.
Используйте пример команд как отправную точку. Обратитесь к восходящей документации для полного набора опций, включая учетные данные, шифрование и настройку пропускной способности.
Для Amazon S3 используйте
aws s3 syncчерез интерфейс командной строки AWS. Сначала проведите пробный запуск для проверки операции, затем выполните копирование.aws s3 sync s3://SOURCE-BUCKET s3://DESTINATION-BUCKET --dryrun aws s3 sync s3://SOURCE-BUCKET s3://DESTINATION-BUCKETДля Хранилище BLOB-объектов Azure используйте
azcopy copyс общей подписью доступа на исходном коде.azcopy copy 'https://SOURCE-STORAGE-ACCOUNT-NAME.blob.core.windows.net/CONTAINER?SAS-TOKEN' 'https://DESTINATION-STORAGE-ACCOUNT-NAME.blob.core.windows.net/CONTAINER' --recursiveДля Google Cloud Storage используйте
gcloud storage rsyncчерез интерфейс командной строки Google Cloud.gcloud storage rsync --recursive gs://SOURCE-BUCKET gs://DESTINATION-BUCKET
��ля MinIO используйте mc mirror из клиента MinIO.
mc mirror SOURCE-ALIAS/SOURCE-BUCKET DESTINATION-ALIAS/DESTINATION-BUCKET
После завершения копирования проверьте количество объектов и общий размер получателя с помощью стандартных инструментов размещения вашего провайдера. Проверьте любые расхождения, прежде чем продолжать.
-
Включите режим обслуживания. Чтобы предотвратить запись новых объектов в исходник во время перехода, включите режим обслуживания на ваш экземпляр GitHub Enterprise Server. Это на короткое время выводит экземпляр в офлайн для конечных пользователей. Дополнительные сведения см. в разделе Включение и планирование режима обслуживания.
-
Выполните финальную дельта-синхронизацию. С включенным режимом обслуживания запустите ту же команду копирования с начального этапа копирования. Это фиксирует все объекты, записанные в исходник после начала первоначальной копии.
Например, для Amazon S3:
aws s3 sync s3://SOURCE-BUCKET s3://DESTINATION-BUCKET -
Обновите конфигурацию хранилища. Обновление, ваш экземпляр GitHub Enterprise Server чтобы указать на новое место хранилища. Сохраняйте тот же метод аутентификации, что и раньше.
-
Войдите в Консоль управления. Дополнительные сведения см. в разделе Доступ к консоли управления.
-
В боковой панели «Настройки» нажмите Действия.
-
В разделе «Артефакт и Log Storage", обновляют поля, указывающие на место хранилища, например, имя bucket, имя аккаунта, региона, ролевой ARN или строка подключения. Не меняйте метод аутентификации.
-
Нажмите «Настройки хранилища теста», чтобы проверить новую конфигурацию.
Предупреждение
Если тест провалился, не сохраняйте настройки. Расследуйте ошибку и проведите повторный тест, прежде чем продолжить. Сохранение некорректной конфигурации хранилища может привести к сбою.
-
Нажмите «Сохранить настройки» и дождитесь, пока сервисы полностью перезапустятся.
В качестве альтернативы можно обновить конфигурацию из командной строки, используя
ghe-actions-precheckаутентификацию на основе учетных данных. Дополнительные сведения см. в разделе ��лужебные программы командной строки. -
-
Проверьте миграцию. После изменения конфигурации убедитесь, что GitHub Actions можно читать с нового места хранения.
-
Отключите режим обслуживания. Дополнительные сведения см. в разделе Включение и планирование режима обслуживания.
-
В веб-интерфейсе для ваш экземпляр GitHub Enterprise Server, откройте недавний рабочий процесс, который был завершён до миграции. Убедитесь, что:
- Загрузка логов для запуска рабочих процессов.
- Загрузите артефакты сборки успешно.
-
Запустите новый рабочий процесс и убедитесь, что:
- Забег успешно завершается.
- Видны бревна и любые артефакты, созданные в ходе забега.
Если какая-либо из этих проверок проверки не удаётся, сохраняйте исходное хранилище и обратитесь к разделу «Откат назад » ниже.
-
-
Выведи из эксплуатации источниковое хранилище. Продолжайте только после успешного завершения валидации и достаточного времени, чтобы убедиться, что новое место хранения в порядке. В качестве рекомендации сохраняйте исходное хранилище в состоянии только для чтения как минимум один полный цикл резервного копирования перед его удалением.
Когда вы будете готовы удалить исходное хранилище, следуйте стандартной процедуре вашего провайдера для удаления ведра или контейнера.
Откат назад
Если валидация не удаётся или возникают проблемы после монтажа, откатитесь назад, указав ваш экземпляр GitHub Enterprise Server на исходное хранилище. Исходное хранилище — это ваша известная хорошая копия. Не копируйте данные с назначения обратно в исходник в рамках отката, потому что данные, записанные в адрес при неудачном переходе, могут быть частичными или непоследовательными, а запись обратно в исходник рискует повредить вашу единственную исправную копию.
Предупреждение
Откат назад удаляет все данные, записанные или удаленные после перехода. Если валидация не удаётся, сразу откатите назад, вместо того чтобы пытаться продолжить устранение неполадок. Чем дольше вы ждёте, тем больше данных находится под угрозой.
Если валидация не сработает или возникнут проблемы:
- Немедленно включите режим обслуживания.
- В , Консоль управлениявосстановите исходные значения конфигурации хранилища и нажмите Тест параметров хранилища, затем Сохранить настройки.
- Отключите режим обслуживания и запустите этапы валидации с исходным хранилищем.
После успешного отката расследуйте ошибку и планируйте новую попытку миграции.
Соображения для GitHub Packages
Вы можете применить тот же подход к миграции к GitHub Packages внешнему хранилищу, но с этими важными отличиями. Прочитайте этот раздел полностью, прежде чем переносить хранилище на инстанс, который GitHub Packages был включён.
- OpenID Connect недоступен для GitHub Packages. GitHub Packages Поддерживает аутентификацию на основе учетных данных только для внешнего хранилища. Ограничение метода аутентификации в этой статье по-прежнему действует: сохранять метод аутентификации без изменений во время миграции.
- GitHub Packages более чувствительна к несоответствиям времени. Когда пакеты публикуются в окне миграции, система создаёт как новые объекты хранилища, так и записи базы данных. Чтобы избежать несогласованности, поддерживайте режим обслуживания включённым непрерывно с начала финальной дельта-синхронизации до успешной валидации новой конфигурации.
- Обновляйте обе конфигурации вместе, если один и тот же провайдер обслуживает оба продукта. Если вы настроили GitHub Actions и GitHub Packages используете один и тот же тип провайдера и переходите на оба, планируйте переход как одно окно обслуживания и обновите обе конфигурации перед отключением режима обслуживания.
- Для миграции GitHub Packages хранилища между провайдерами обращайтесь к Поддержка GitHub Enterprise. Перемещения между поставщиками здесь не рассматриваются.
Для получения дополнительной информации о настройке GitHub Packages хранилища см. Начало работы с пакетами GitHub для вашего предприятия.