Как интегрировать тестовую лабораторию Firebase с circleci - PullRequest
0 голосов
/ 22 мая 2018

Привет, я хочу проверить свое приложение в лаборатории тестирования Firebase.Я хочу интегрировать это с кружочками.Я прочитал этот документ 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 firebase-circleci@dazzling-fire-5515.iam.gserviceaccount.com --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 Ответ

0 голосов
/ 04 июля 2018

для CirlceCI 2.0 есть только Firebase & GCP Deployment примеров;которые здесь не совсем применимы ... часть gcloud весьма актуальна, поскольку документы по Использование Firebase Test Lab с системами непрерывной интеграции относятся к ней:

gcloud firebase test android run --app <local_server_path>/<app_apk>.apk --test <local_server_path>/<app_test_apk>.apk

onВ CircleCI 2.0 команда gcloud выглядит как sudo /opt/google-cloud-sdk/bin/gcloud.а также как это описано здесь, а) как получить коды выхода и б) что они на самом деле означают: https://firebase.google.com/docs/test-lab/android/command-line#running_your_instrumentation_tests

описание проблемы «не тестирует приложение» недостаточно, чтобы сказать, чтоточно не так.Я бы предположил, что команда, инициирующая тестирование КИПиА, должна выдать ошибку или жалобу;пожалуйста, предоставьте дополнительную информацию (журналы).

Я только что нашел одну статью на Medium, которая, кажется, то, что вы ищете: Все, что вам нужно знать о CircleCI 2.0 с Firebase Test Lab. (есть еще одна статья , которая также использует FastLane).

...