Есть ли способ использовать expo build:ios
в среде CI и пройти двухфакторную аутентификацию?
У меня возникают проблемы при запуске сборки с использованием expo в нашей среде CI из-за необходимости двухфакторной аутентификации для моей учетной записи разработчика Apple.
Команда expo build:ios
должна использоваться только локально или без двухфакторной аутентификации?
Запуск сборки локально в интерактивном режиме работает - пароль и двухфакторная аутентификация требовались только при первом выборе приложения. Для последовательной сборки я использую только expo build:ios --release-channel test
и все
Моя среда CI - это Google Cloud Build - она работает в контейнере Docker, поэтому я не могу go и выполнить однократный ручной вход чтобы бегун сохранил некоторую информацию о сеансе, как это происходит локально, могу я?
После прочтения информации об использовании cli для expo build:ios
и того, что вы можете установить пароль своей учетной записи как переменную ENV, например EXPO_APPLE_PASSWORD
I хотя должно быть возможно использовать его в среде CI
Но тогда я получаю следующий результат:
expo login --non-interactive -u XXX
Success. You are now logged in as XXX.
expo build:ios --non-interactive --no-wait --release-channel test --apple-id XXXXX --team-id F7NE7X9ZFW
- Making sure project is set up correctly...
[16:43:00] Checking if there is a build in progress...
[16:43:00] Trying to authenticate with Apple Developer Portal...
Two-factor Authentication (6 digits code) is enabled for account 'XXXXX'
More information about Two-factor Authentication: https://support.apple.com/en-us/HT204915
If you're running this in a non-interactive session (e.g. server or CI)
check out https://github.com/fastlane/fastlane/tree/master/spaceship#2-step-verification
...
Please enter the 6 digit code:
[16:43:02] Authentication with Apple Developer Portal failed!
[16:43:02] Reason: Unknown reason, raw: "The input stream is exhausted."
Поэтому я перехожу по ссылке для неинтерактивного сеансы: https://github.com/fastlane/fastlane/tree/master/spaceship#2 -step-проверка
И я вижу, что мне нужно создать и использовать переменную среды FASTLANE_SESSION
. Но в этот момент я не уверен, будет ли это работать, так как кажется, что это исходит от некоторого инструментария, который expo использует внутри.
Думаю, я могу установить fastlane
локально и попытаться сгенерировать эту переменную с помощью команды fastlane spaceauth -u user@example.org
. Я не нашел ничего об этом в документации expo, хотя
Есть информация об использовании expo build:ios
для создания автономных приложений, она описывает только то, как их создавать локально https://docs.expo.io/versions/v36.0.0/distribution/building-standalone-apps/
У них есть руководство по потоку CI («на вашем CI») - но он использует turtle-cli
, а для iOS требуется работать в среде ma c - в нем рассказывается, как делать сборки самостоятельно. на вашей собственной машине и без использования expo.io
https://docs.expo.io/versions/v36.0.0/distribution/turtle-cli/
Еще одна вещь, которую я пробовал, работает так:
expo build:ios \
--team-id YOUR_TEAM_ID \
--dist-p12-path /path/to/your/dist/cert.p12 \
--provisioning-profile-path /path/to/your/provisioning/profile.mobileprovision
С EXPO_IOS_DIST_P12_PASSWORD
установлено как переменная env, но сборка не удастся, так как для нее все еще нужны идентификатор Apple и пароль
Есть ли способ, которым я могу поделиться или скопировать свой локальный сеанс - сеанс, который expo создал первым время, когда я запускаю build:ios
, где я аутентифицировался, и мне больше не предлагается пароль для компьютера CI?