diff --git a/kokoro/build.sh b/kokoro/build.sh index cbf76c881..bab380f26 100644 --- a/kokoro/build.sh +++ b/kokoro/build.sh @@ -20,6 +20,9 @@ set -e # Display commands to stderr. set -x +deviceIds=${1:-'Nexus5,Pixel2,Pixel3'} +osVersionIds=${2:-'23,27,30'} + GRADLE_FLAGS=() if [[ -n "$GRADLE_DEBUG" ]]; then GRADLE_FLAGS=( --debug --stacktrace ) @@ -41,4 +44,32 @@ export JAVA_HOME= ./gradlew "${GRADLE_FLAGS[@]}" build +# For Firebase Test Lab +./gradlew app:assembleAndroidTest +./gradlew app:assembleDebug + +MAX_RETRY=3 +run_firebase_test_lab() { + ## Retry can be done by passing the --num-flaky-test-attempts to gcloud, but gcloud SDK in the + ## kokoro server doesn't support it yet. + + set +e # To not exit on an error to retry flaky tests + local counter=0 + local result=1 + while [ $result != 0 -a $counter -lt $MAX_RETRY ]; do + 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-ids $deviceIds \ + --os-version-ids $osVersionIds \ + --locales en \ + --timeout 60 + result=$? ; + let counter=counter+1 + done + return $result +} + +run_firebase_test_lab exit $? diff --git a/kokoro/nightly.cfg b/kokoro/nightly.cfg new file mode 100644 index 000000000..e94fb54bb --- /dev/null +++ b/kokoro/nightly.cfg @@ -0,0 +1,2 @@ +# Location of the bash script. +build_file: "nowinandroid/kokoro/nightly.sh" diff --git a/kokoro/nightly.sh b/kokoro/nightly.sh new file mode 100644 index 000000000..85aa7c3ab --- /dev/null +++ b/kokoro/nightly.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# Fail on any error. +set -e +# Display commands to stderr. +set -x + +# Run the normal build, but replace the default virtual devices with physical ones. +# hammerhead | Nexus 5 | API 23 | Phone +# walleye | Pixel 2 | API 27 | Phone +# gts4lltevzw | Galaxy Tab S4 | API 28 | Tablet +# a10 | Samsung A10 | API 29 | Phone +# redfin | Pixel 5e | API 30 | Phone +# oriole | Pixel 6 | API 31 | Phone +bash build.sh "hammerhead,walleye,gts4lltevzw,a10,redfin,oriole" "23,27,28,29,30,31" + +exit $?