Двухфакторная аутентификация с Fastlane
Я выпускаю свое приложение для распространения firebase throw Fastlane при использовании машины CI. У меня проблема с 2FA.
Я использую Match для получения сертификатов. Это то, что у меня есть в разделе "Файл приложения"
app_identifier "com.example.example" # the bundle
apple_id "[email protected]" # Your Apple
team_id "abcd..." # Developer Portal Team ID
ENV["FASTLANE_USER"] = "[email protected]"
ENV["MATCH_PASSWORD"] = ""
ENV["FASTLANE_PASSWORD"] = ""
ENV["FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"] = ""
Я получаю вот такую ошибку:
Двухфакторная аутентификация (6-значный код) включена для учетной записи [email protected] Подробнее о двухфакторной аутентификации: https://support.apple.com/en-us/HT204915
Если вы запускаете это в неинтерактивном сеансе (например, на сервере или CI), проверьте https://github.com/fastlane/fastlane/tree/master/spaceship#2-step-verification
(Введите,
sms
чтобы выйти из этого приглашения и выберите доверенный номер телефона, чтобы отправить код в виде текстового сообщения)(Вы также можете установить переменную среды,
SPACESHIP_2FA_SMS_DEFAULT_PHONE_NUMBER
чтобы автоматизировать это) (Подробнее см.:https://github.com/fastlane/fastlane/blob/master/spaceship/docs/Authentication.md#auto-select-sms-via-spaceship_2fa_sms_default_phone_number)Пожалуйста, введите 6-значный код:
Я прочитал "https://docs.fastlane.tools/best-practices/continuous-integration/", но мне не повезло. может ли кто-нибудь помочь мне решить эту проблему?
Ответы
Fastlane команда проделали большую работу ❤ в последних версиях (от 2.157.0 до 2.163.0 до сих пор) , чтобы поддержать использование ключа API для App Store Connect API во многих действиях ( pilot
, deliver
, match
и т.д. - статус для каждого инструмент доступен здесь ).
Использование ключа API устраняет необходимость предоставлять учетную запись Apple для аутентификации и авторизации действий fastlane для выполнения своих операций в App Store Connect, что также означает, что вы больше не будете бороться с двухфакторными проблемами на вашем компьютере CI или должны будете вручную восстановить сеанс, fastlane spaceauth
когда он станет недействительным.
Со страницы App Store Connect API Key :
Создание ключа API позволяет настраивать, аутентифицировать и использовать для этого ключа одну или несколько служб Apple. Срок действия ключей не истекает, но их нельзя изменить для доступа к другим службам после создания. У вас может быть не более 50 активных ключей одновременно.
Есть и другие преимущества использования ключа API, и это рекомендуемое решение, как описано в документации Fastlane :
Fastlane исторически использовал Apple ID с именем пользователя и паролем для аутентификации с помощью веб-сеанса на основе файлов cookie. fastlane продолжит использовать тот же веб-сеанс на основе файлов cookie для аутентификации с помощью неофициальной версии API App Store Connect.
Однако по возможности рекомендуется использовать аутентификацию с помощью ключа API. Преимущества включают:
- 2FA не требуется
- Лучшая производительность
- Документированный API
- Повышенная надежность
Я не буду здесь подробно описывать шаги по настройке и использованию ключа API, поскольку это уже хорошо объяснено в документации, но вот основные шаги:
- Создайте новый ключ API из App Store Connect (для его создания у вас должна быть роль «Владелец учетной записи»),
- Храните ключ и информацию о нем на своем CI,
- В вашем
Fastfile
вызовите app_store_connect_api_keyдействие со значениями, хранящимися в 2. - Передайте значение, возвращаемое функцией 3., в качестве
api_key
параметра, когда вы вызываете действие, или позвольте действию само извлекать свое значение из контекста полосы (если оно поддерживает).
Проблема с 2FA из-за недопустимого сеанса:

Должно исчезнуть :)

Вам необходимо настроить переменную среды 'FASTLANE_SESSION' = '--- \ n .... \ n' токен.
Чтобы получить этот токен, вам необходимо пройти аутентификацию вручную с помощью этой команды:
fastlane spaceauth -u YOUR_APP_STORE_EMAIL
пример fastlane spaceauth -u [email protected].
Вам необходимо будет проходить повторную валидацию каждые 2-3 недели (некоторые говорят, что 30 дней) сеанс. Сейчас процесс довольно болезненный.