# Use the latest 2.1 version of CircleCI pipeline process engine. # See: https://circleci.com/docs/2.0/configuration-reference # For a detailed guide to building and testing on Android, read the docs: # https://circleci.com/docs/2.0/language-android/ for more details. version: 2.1 # Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects. # See: https://circleci.com/docs/2.0/orb-intro/ orbs: android: circleci/android@1.0.3 # Define a job to be invoked later in a workflow. # See: https://circleci.com/docs/2.0/configuration-reference/#jobs jobs: # Below is the definition of your job to build and test your app, you can rename and customize it as you want. build-and-test: # These next lines define the Android machine image executor. # See: https://circleci.com/docs/2.0/executor-types/ executor: name: android/android-machine # Add steps to the job # See: https://circleci.com/docs/2.0/configuration-reference/#steps steps: # Checkout the code as the first step. - checkout # Setup files for build. - run: name: Setup variables for build command: | echo "$GOOGLE_SERVICES_KEY" > "app/google-services.json" # echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > "android/app/release_keystore.jks" - run: name: Grant execute permission for gradlew command: | chmod +x gradlew # The next step will run the unit tests - android/run-tests: test-command: ./gradlew testDriverDebugUnitTest --continue # Install Firebase tools needed for firebase emulator - run: name: Install firebase tools command: | curl -sL firebase.tools | bash # Then start firebase emulator in the background - run: name: Start firebase emulator command: | firebase emulators:start background: true # Then start the emulator and run the Instrumentation tests! - android/start-emulator-and-run-tests: post-emulator-launch-assemble-command: ./gradlew assembleDriverDebugAndroidTest test-command: ./gradlew connectedDriverDebugAndroidTest system-image: system-images;android-25;google_apis;x86 # And finally run the release build # - run: # name: Assemble release build # command: | # ./gradlew assembleDriverRelease # Then publish the artifacts of the Instrumentation tests! - store_artifacts: path: app/build/reports/androidTests/connected destination: reports # Then publish the artifacts of the Firebase emulator logs! - run: name: save firebase emulator logs command: | mkdir -p tmp/firebase_logs cp *.log tmp/firebase_logs - store_artifacts: path: tmp/firebase_logs destination: logs # Then publish the results of the Instrumentation tests! - store_test_results: path: app/build/outputs/androidTest-results/connected # Invoke jobs via workflows # See: https://circleci.com/docs/2.0/configuration-reference/#workflows workflows: sample: # This is the name of the workflow, feel free to change it to better match your workflow. # Inside the workflow, you define the jobs you want to run. jobs: - build-and-test