N S*_*rma 14 continuous-integration android firebase circleci firebase-test-lab
嗨,我想在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 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
Run Code Online (Sandbox Code Playgroud)
有谁知道我错过了什么?
对于 CirlceCI 2.0,只有Firebase 和 GCP 部署示例;这在这里并不真正适用...该部分相当相关,因为使用 Firebase 测试实验室与持续集成系统的gcloud文档
引用了它:
gcloud firebase test android run --app <local_server_path>/<app_apk>.apk --test <local_server_path>/<app_test_apk>.apk
Run Code Online (Sandbox Code Playgroud)
在 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
“不是测试应用程序”的问题描述不足以说明到底出了什么问题。我认为启动仪器测试的命令应该抛出一些错误或一些抱怨;请提供更多详细信息(日志)。
我刚刚在 Medium 上找到了一篇文章,这似乎就是您正在寻找的内容:All you need to Know about CircleCI 2.0 with Firebase Test Lab(还有另一篇文章,也利用了 FastLane)。
| 归档时间: |
|
| 查看次数: |
601 次 |
| 最近记录: |