/bin/bash --noprofile --norc /Users/runner/work/_temp/9862a4f1-6542-4b7b-9dbb-9782561da5bb. sh Попытка аутентификации Firebase с учетной записью службы... ##[debug]Ресурсы среды агента - Диск: / Доступно 124774,09 МБ из 332471,96 МБ, Память: использовано 7722,00 МБ из 14332,00 МБ, ЦП: Использование 99,30% Ошибка: не удалось выполнить аутентификацию , вы запустили вход в Firebase? Аутентификация Firebase не удалась. ##[debug]Код выхода 1, полученный от инструмента '/bin/bash' ##[debug]Потоки STDIO закрыты для инструмента '/bin/bash' ##[error]Bash завершился с кодом '1'.
Я убедился, что предоставлен ключ сервисного аккаунта и установлена переменная среды GOOGLE_APPLICATION_CREDENTIALS. Ниже приведена конфигурация YAML моего конвейера:
триггер: нет пул: vmImage: параметры 'macOS-latest': - имя: appVariant displayName: 'App Variant' тип: строка по умолчанию: '{{ appName}}' значения: - '{{appName}}' - 'BCDC' - имя: firebaseEnv displayName: 'Firebase Environment' тип: строка по умолчанию: значения 'UAT': - 'UAT' - 'Pilot' - имя: testGroup displayName: «Test Group» тип: строка по умолчанию: «Android_UAT_Testers» значения: - «Android_UAT_Testers» - «Android_Pilot_Testers» - имя: ReleaseNotes displayName: «Release Notes» тип: строка по умолчанию: «Примечания к выпуску не предоставлены». этапы: - этап: задания сборки: - задание: BuildJob timeoutInMinutes: 120 переменных: GRADLE_USER_HOME: $(Pipeline.Workspace)/.gradle шаги: - задача: входы CmdLine@2: скрипт: "sudo rm -rf $ANDROID_HOME/ndk/ && sudo rm -rf $ANDROID_HOME/ndk-bundle/" - ${{ if eq(parameters.appVariant, '{{appName}}') }}: - ${{ if eq(parameters.firebaseEnv, 'UAT') }}: - задача: Gradle@2 displayName: 'Gradle Compile {{appName}} для UAT' входные данные: gradleWrapperFile: 'gradlew' задачи: 'assembleUatOne{{appName}}GoogleDebug' - ${{ if eq(parameters.firebaseEnv) , 'Pilot') }}: - задача: Gradle@2 displayName: 'Gradle Compile {{appName}} for Pilot' входные данные: gradleWrapperFile: 'gradlew' задачи: 'assemblePilotOne{{appName}}GoogleDebug' - ${{ if eq(parameters.appVariant, 'BCDC') }}: - ${{ if eq(parameters.firebaseEnv, 'UAT') }}: - задача: Gradle@2 displayName: 'Gradle Compile BCDC для UAT' входные данные: gradleWrapperFile: Задачи 'gradlew': 'assembleUatOne{{appName}}BcdcGoogleDebug' - ${{ if eq(parameters.firebaseEnv, 'Pilot') }}: - задача: Gradle@2 displayName: 'Gradle Compile BCDC for Pilot' входные данные: gradleWrapperFile : задачи 'gradlew': 'assemblePilotOne{{appName}}BcdcGoogleDebug' - задача: CopyFiles@2 входные данные: SourceFolder: $(Build.SourcesDirectory) содержимое: '**/*.apk' targetFolder: '$(build.artifactStagingDirectory) ' overWrite: true - задача: PublishBuildArtifacts@1 inputs: pathtoPublish: '$(Build.ArtifactStagingDirectory)/app/build/outputs/apk/' ArtifactName: 'apks' publicLocation: 'container' - задача: CmdLine@2 displayName: ' Проверьте учетную запись службы и входные данные учетных данных: скрипт: | echo "$(MOBILEFIREBASEACCOUNTSERVICE)" > $(Pipeline.Workspace)/service-account.json экспорт GOOGLE_APPLICATION_CREDENTIALS=$(Pipeline.Workspace)/service-account.json echo "GOOGLE_APPLICATION_CREDENTIALS имеет значение: $GOOGLE_APPLICATION_CREDENTIALS" echo "Служебный аккаунт JSON файл:" cat $(Pipeline.Workspace)/service-account.json | jq '.' if [ -f "$(Pipeline.Workspace)/service-account.json" ]; затем отобразите «Файл учетной записи службы существует». else echo «Файл учетной записи службы НЕ существует». выход 1 fi - задача: CmdLine@2 displayName: «Установить Firebase CLI» входные данные: скрипт: «npm install -g firebase-tools» - задача: CmdLine@2 displayName: «Аутентификация Firebase CLI с учетной записью службы» входные данные: скрипт: | echo «Попытка аутентификации Firebase с учетной записью службы...» if npx firebase project:list; затем отобразите «Аутентификация Firebase прошла успешно». else echo «Ошибка аутентификации Firebase». выход 1 fi - задача: CmdLine@2 displayName: 'Распространить APK в Firebase (UAT)' условие: eq('${{parameters.firebaseEnv }}', 'UAT') входные данные: скрипт: | npx firebase appdistribution:distribute "$(build.artifactStagingDirectory)/app/build/outputs/apk/uatOne{{appName}}Google/debug/app-uat-one{{appName}}-google-debug.apk" \ - -app $(FIREBASE_APP_ID) \ --groups ${{parameters.testGroup }} \ --release-notes "${{parameters.releaseNotes }}" \ --debug - Task: CmdLine@2 displayName: 'Распространить APK по Условие Firebase (Pilot): eq('${{parameters.firebaseEnv }}', 'Pilot') входные данные: скрипт: | npx firebase appdistribution:distribute "$(build.artifactStagingDirectory)/app/build/outputs/apk/uatOne{{appName}}Google/release/app-uat-one{{appName}}-google-release.apk" \ - -app $(FIREBASE_APP_ID) \ --groups ${{parameters.testGroup }} \ --release-notes "${{parameters.releaseNotes }}" \ --debug
Сведения об ошибке:
Похоже, что Firebase CLI не выполняет проверку подлинности с использованием учетных данных учетной записи службы.
Ошибка предлагает выполнить вход в систему Firebase, но, поскольку я использую учетную запись службы, это не должно В этом нет необходимости.
Что я пробовал:
Проверил, что учетная запись службы имеет достаточные разрешения для распространения приложений Firebase.
Убедился, что переменная среды GOOGLE_APPLICATION_CREDENTIALS установлена правильно.
Запустите команду команда npx firebase project:list для проверки аутентификации, но она завершается с той же ошибкой.
триггер: нет
пул:
vmImage: 'macOS-latest'
параметры:
- имя: appVariant
displayName: 'App Variant'
тип: строка
по умолчанию: '{{appName}}'
значения:
'{{appName}}' - 'BCDC'
displayName: 'Firebase Environment'
тип: строка
по умолчанию: 'UAT'
значения:
< ul>
'UAT'
[*]'Пилот'
[*]имя: testGroup
displayName: 'Test Group'
тип: строка
по умолчанию: 'Android_UAT_Testers'
значения:
< ul>
'Android_UAT_Testers'
[*]'Android_Pilot_Testers'
[*]имя: ReleaseNotes
displayName: «Примечания к выпуску»
тип: строка
по умолчанию: «Примечания к выпуску не предоставлены».
этапы:
- этап: создание
рабочих мест:
< ul>
job: BuildJob
timeoutInMinutes: 120
переменные:
GRADLE_USER_HOME: $(Pipeline.Workspace)/.gradle
шаги:
задача: CmdLine@2
входные данные:
скрипт: "sudo rm -rf $ ANDROID_HOME/ndk/ && sudo rm -rf $ANDROID_HOME/ndk-bundle/" - ${{ if eq(parameters.appVariant, ' {{appName}}') }}:
${{ if eq(parameters.firebaseEnv, 'UAT') }}:
задача: Gradle@2
displayName: 'Gradle компилировать {{appName}} для UAT'
входные данные:
gradleWrapperFile: 'gradlew'
задачи: 'assembleUatOne{{appName}}GoogleDebug'
- task: Gradle@2
displayName: 'Gradle Compile {{appName) }} для Pilot'
входные данные:
gradleWrapperFile: 'gradlew'
tasks: 'assemblePilotOne{{appName}}GoogleDebug'
[*]${{ if eq(parameters.appVariant, 'BCDC') }}:
- ${{ if eq(parameters.firebaseEnv, 'UAT') }}:
task: Gradle @2
displayName: 'Gradle Compile BCDC для UAT'
входные данные:
gradleWrapperFile: 'gradlew'
задачи: 'assembleUatOne{{appName}}BcdcGoogleDebug'
- task: Gradle@2
displayName: 'Gradle Compile BCDC for Pilot'
входные данные:
gradleWrapperFile: 'gradlew'
tasks: 'assemblePilotOne{{appName}}BcdcGoogleDebug '
[*]задача: CopyFiles @2
входные данные:
SourceFolder: $(Build.SourcesDirectory)
содержимое: '**/*.apk'
targetFolder: '$(build.artifactStagingDirectory)'
overWrite: true
[*]задача: PublishBuildArtifacts@1
входные данные:
pathtoPublish: '$(Build.ArtifactStagingDirectory )/app/build/outputs/apk/'
artifactName: 'apks'
publishLocation: 'container'
[*]
задача: CmdLine@2
displayName: «Проверка учетной записи службы и учетных данных»
входные данные:
скрипт: |
echo "$(MOBILEFIREBASEACCOUNTSERVICE)" > $(Pipeline.Workspace) /service-account.json
экспортировать GOOGLE_APPLICATION_CREDENTIALS=$(Pipeline.Workspace)/service-account.json
Код: Выделить всё
echo "GOOGLE_APPLICATION_CREDENTIALS is set to: $GOOGLE_APPLICATION_CREDENTIALS"
echo "Service account JSON file:"
cat $(Pipeline.Workspace)/service-account.json | jq '.'
if [ -f "$(Pipeline.Workspace)/service-account.json" ]; then
echo "Service account file exists."
else
echo "Service account file does NOT exist."
exit 1
fi
displayName: «Установить Firebase CLI»
входные данные:
скрипт: 'npm install -g firebase-tools'
[*]task: CmdLine@2
displayName: 'Аутентификация Firebase CLI с помощью учетной записи службы'
входные данные:
скрипт: |
echo «Попытка аутентификации Firebase с учетной записью службы...»
if npx firebase project:list; затем
echo «Аутентификация Firebase прошла успешно».
else
echo «Аутентификация Firebase не удалась».
exit 1
fi
задача: CmdLine@2
displayName: 'Распространить APK в Firebase (UAT)'
условие: eq('${{parameters.firebaseEnv }}', 'UAT')
входные данные:
скрипт: |
npx firebase appdistribution:distribute "$(build.artifactStagingDirectory)/app/build/outputs/apk/uatOne{{appName}}Google/ debug/app-uat-one{{appName}}-google-debug.apk"
--app $(FIREBASE_APP_ID)
--группирует ${{ параметры. testGroup }}
--release-notes "${{parameters.releaseNotes }}"
--debug
[*]задача: CmdLine@2
displayName: 'Распространить APK в Firebase (пилотная версия)'
условие: eq('${{ параметры.firebaseEnv }}', 'Пилотная версия ')
входные данные:
script: |
npx firebase appdistribution:distribute "$(build.artifactStagingDirectory)/app/build/outputs/apk/uatOne{{appName}}Google/release/ app-uat-one{{appName}}-google-release.apk"
--app $(FIREBASE_APP_ID)
--groups ${{parameters.testGroup } }
--release-notes "${{parameters.releaseNotes }}"
--debug
Подробнее здесь: https://stackoverflow.com/questions/790 ... nt-on-azur