Перенесите привычную среду на новую машину
Переносите в три этапа: данные, инструменты и планировщик задач
Не копируйте целиком домашнюю папку пользователя. Сначала перенесите один проект и зафиксируйте воспроизводимые зависимости, затем переключите метки CI. Каждый этап можно проверить и при необходимости отменить отдельно.
01 · Данные
Сначала синхронизируйте проект, затем импортируйте материалы для подписи
Синхронизируйте рабочую папку с локального компьютера с помощью rsync, исключив артефакты сборки. Экспортируйте сертификат вместе с закрытым ключом в файл, защищённый паролем; профиль подготовки перенесите отдельно. После импорта и проверки удалите временную копию.
rsync -av \
--exclude DerivedData \
--exclude build \
-e "ssh -i ~/.ssh/minivps_workstation" \
./App/ dev@203.0.113.24:~/work/App/
Проверка: все файлы проекта на месте, сертификат и закрытый ключ для подписи доступны в паре.
02 · Инструменты
Сверьте зависимости по списку
Экспортируйте Brewfile и проверьте его на удалённой машине перед установкой. Подготовьте версию Xcode, требуемую проектом, и выберите уже установленную версию с помощью xcodes. Затем проверьте Ruby, Bundler и lock-файл проекта.
brew bundle dump --file=Brewfile
brew bundle --file=Brewfile
xcodes installed
xcodes select
xcodebuild -version
Проверка: версии инструментов соответствуют требованиям проекта, установку зависимостей можно повторить.
03 · Подключение CI
В конце замените метки для распределения задач
Оставьте существующий конвейер без изменений и добавьте задачу, запускаемую вручную. Убедитесь, что она может получить доступ к проекту, подписать сборку и загрузить артефакт. Затем переключите runs-on или метку узла в основной задаче на новую рабочую станцию.
cd ~/work/App
bundle install
xcodebuild -list
bundle exec fastlane beta
Проверка: задача полностью завершилась успешно, артефакт можно скачать, а причину сбоя можно определить по журналу.
Это рекомендуемая последовательность переноса, а не обещание уложиться в определённый срок. Первая установка зависимостей, загрузка SDK и размер проекта обычно требуют больше времени, чем вход по SSH. Для начала проверьте сборку без публикации.