Аутентификация и использование Firebase в неинтерактивных средах

Я работаю с мобильным приложением Android, исходный код которого хранится в Azure. Я хочу автоматизировать процесс сборки и загрузить файл .apk в Firebase App Distribution, согласно требованию.

Я использовал Azure Pipeline для автоматизации процесса сборки. Я использую файл .yml для автоматизации процесса. Удалось сгенерировать файл .apk. Мне нужно загрузить это в Firebase.

Следил за несколькими блогами и получил приведенный ниже код, который нужно записать в мой файл .yml.

- script: |
    cd functions
    npm init --yes
    npm install -g firebase-tools
    npm install
    firebase login --interactive
    firebase appdistribution:distribute --app APP_ID --release-notes "My first distribution" --testers "[email protected]" $(build.artifactStagingDirectory)$(Build.ArtifactStagingDirectory)/android-devops.apk
  displayName: 'npm install and deploy'

При этом не удалось войти в firebase, так как при запуске не будет взаимодействия. Azure полностью автоматизирует выполнение задания. Если бы я использовал эти команды в командной строке, он открыл бы страницу входа в firebase, и при входе в систему он прошел аутентификацию. После этого команда appdistribution:distribute успешно загружает приложение в Firebase. Но мне нужно автоматизировать этот процесс в Azure Devops Pipeline, где не будет взаимодействий.


comment
Я думаю, что это то, что вы ищете   -  person Akshay Jain    schedule 26.04.2020
comment
Я пробовал с этим. А при наличии команды firebase login:ci выполнение конвейера Azure выдает ошибку с сообщением Невозможно запустить login:ci в неинтерактивном режиме.   -  person Joseph    schedule 27.04.2020
comment
Насколько я понимаю, вам нужно запустить команду ci, где вы можете иметь браузер. Вы получите токен и будете использовать его в скрипте конвейера Azure. Пример развертывания firebase --token ‹token›   -  person Akshay Jain    schedule 27.04.2020
comment
Проблема здесь в том, что у меня нет доступа к веб-браузеру, так как он работает в Azure Pipeline, который не является интерактивным.   -  person Joseph    schedule 27.04.2020
comment
команду ci вы должны запустить на своем ноутбуке, где у вас есть браузер. И вы получаете токен в своем ноутбуке. Просто скопируйте этот токен с ноутбука в сценарий Azure, чтобы вам не приходилось выполнять вход в Firebase в Azure.   -  person Akshay Jain    schedule 27.04.2020
comment
Как долго будет действовать токен аутентификации? Если это короткий период времени, каждый раз, когда я хочу запустить конвейер (может быть, один раз в день), мне нужно генерировать токен вручную   -  person Joseph    schedule 27.04.2020
comment
Хотя я не вижу официального заявления по этому поводу — похоже, срок действия токена вообще не истечет. Возможно, срок действия токена не истекает, пока не будет сгенерирован новый токен. Я предлагаю обратиться с запросом в поддержку firebase.   -  person Akshay Jain    schedule 27.04.2020
comment
Спасибо. Сделаю это.   -  person Joseph    schedule 27.04.2020


Ответы (1)


Сначала попробуйте создать токен аутентификации, а затем используйте один из следующих двух вариантов:

  • Сохраните токен как переменную среды FIREBASE_TOKEN. Ваша система автоматически использует токен.
  • Выполняйте все команды firebase с флагом --token в вашей системе CI.

введите здесь описание изображения

https://firebase.google.com/docs/cli/#command_reference

person Cece Dong - MSFT    schedule 27.04.2020