Как интегрировать тестовую лабораторию firebase с помощью circleci
Привет, я хочу проверить свое приложение на тестовой лаборатории firebase. Я хочу интегрировать его с circleci. Я прочитал этот документ https://circleci.com/docs/1.0/firebase-test-lab/ и создал config.yml
Я создал GCLOUD_SERVICE_KEY
в переменной окружения circleci, но не тестирует приложение на тестовой лаборатории firebase.
config.yml
version: 2.0
defaults: &defaults
docker:
- image: circleci/android:api-27-alpha
working_directory: ~/github-jobs
environment:
JAVA_TOOL_OPTIONS: "-Xmx1024m"
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.workers.max=2 -Dkotlin.incremental=false"
TERM: dumb
gcloud_config: &gcloud_config
working_directory: ~/github-jobs
docker:
- image: google/cloud-sdk:latest
environment:
TERM: dumb
update_sdk: &update_sdk
name: Update SDK
command: |
mkdir "$ANDROID_HOME/licenses" || true
echo "d56f5187479451eabf01fb78af6dfcb131a6481e" > "$ANDROID_HOME/licenses/android-sdk-license"
echo "84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
sdkmanager "platform-tools" "platforms;android-27"
jobs:
build:
<<: *defaults
steps:
- run:
<<: *update_sdk
- checkout
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}-{{ checksum "base/build.gradle" }}-{{ checksum "instantapp/build.gradle" }}-{{ checksum "main/build.gradle" }}-{{ checksum "tv/build.gradle" }}
- run:
name: chmod permissions
command: chmod +x ./gradlew
- run:
name: Download Dependencies
command: ./gradlew dependencies --no-daemon
- save_cache:
paths:
- ~/.gradle
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}-{{ checksum "base/build.gradle" }}-{{ checksum "instantapp/build.gradle" }}-{{ checksum "main/build.gradle" }}-{{ checksum "tv/build.gradle" }}
- run:
name: Assemble APKs
command: ./gradlew assemble --no-daemon
- save_cache:
paths:
- ~/.gradle/caches
- ~/.gradle/wrapper
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- store_artifacts:
path: app/build/outputs/apk
destination: apks
- store_artifacts:
path: app/build/reports
destination: reports
- store_artifacts:
path: build/dependencyUpdates
destination: dependencyUpdates
- store_test_results:
path: app/build/test-results
- persist_to_workspace:
root: .
paths:
- build
- app/build
# Google Cloud Service
export_gcloud_key: &export_gcloud_key
run:
name: Export Google Cloud Service key environment variable
command: echo 'export GCLOUD_SERVICE_KEY="$GCLOUD_SERVICE_KEY"' >> $BASH_ENV
decode_gcloud_key: &decode_gcloud_key
run:
name: Decode Google Cloud credentials
command: echo $GCLOUD_SERVICE_KEY | base64 -di > ${HOME}/client-secret.json
test_instrumented:
<<: *gcloud_config
steps:
- *export_gcloud_key
- *decode_gcloud_key
- run:
name: Set Google Cloud target project
command: gcloud config set project dazzling-fire-5515
- run:
name: Authenticate with Google Cloud
command: gcloud auth activate-service-account [email protected] --key-file ${HOME}/client-secret.json
- run:
name: Run instrumented test on Firebase Test Lab
command: gcloud firebase test android run --type instrumentation --app app/build/outputs/apk/debug/app-debug.apk --test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk --device model=Nexus5X,version=26,locale=en_US,orientation=portrait --environment-variables coverage=true,coverageFile=/sdcard/tmp/code-coverage/connected/coverage.ec --directories-to-pull=/sdcard/tmp --timeout 20m
- run:
name: Create directory to store test results
command: mkdir firebase
- run:
name: Download instrumented test results from Firebase Test Lab
command: gsutil -m cp -r -U "'gsutil ls gs://test-lab-3udbiqpdyp0d0-miwcp7d69v80m | tail -1'*" /root/workspace/firebase/
- persist_to_workspace:
root: .
paths:
- firebase
- store_artifacts:
path: firebase/
destination: /firebase/
general:
branches:
only:
- master # list of branches to build
- develop
Кто-нибудь знает, что мне не хватает?
Ответы
Ответ 1
для CirlceCI 2.0 есть только примеры развертывания Firebase & GCP; которые на самом деле не применимы здесь... часть gcloud
весьма актуальна, поскольку к ней относятся документы в разделе " Лаборатория тестирования Firebase" с системами непрерывной интеграции:
gcloud firebase test android run --app <local_server_path>/<app_apk>.apk --test <local_server_path>/<app_test_apk>.apk
на CircleCI 2.0 команда gcloud
выглядит как sudo/opt/google-cloud-sdk/bin/gcloud
. а также описывается здесь: a) как получить коды выхода и b) что они на самом деле означают: https://firebase.google.com/docs/test-lab/android/command-line#running_your_instrumentation_tests
описание проблемы "не тестировать приложение" недостаточно, чтобы сказать, что именно не так. Я предполагаю, что команда, инициирующая контрольно-измерительный тест, должна вызвать некоторую ошибку или жалобу; просьба представить дополнительную информацию (журналы).
Я только что нашел одну статью на Средстве, которая, кажется, то, что вы ищете: все, что вам нужно знать о CircleCI 2.0 с Firebase Test Lab (есть еще одна статья, в которой также используется FastLane).