mirror of https://github.com/tasks/tasks
New travis config
parent
db49920e21
commit
70011ee67a
@ -1,33 +1,98 @@
|
||||
language: android
|
||||
sudo: required
|
||||
jdk: oraclejdk8
|
||||
# https://github.com/andstatus/todoagenda/blob/aa2bc56effa379e145eecb104cc5bac33975b7aa/.travis.yml
|
||||
# Based on https://travis-ci.org/ankidroid/Anki-Android/builds/624268367
|
||||
# See also https://travis-ci.community/t/is-android-28-emulator-supported/1718/6
|
||||
sudo: true
|
||||
language: bash
|
||||
# ignored on non-linux platforms, but bionic is required for nested virtualization
|
||||
dist: bionic
|
||||
|
||||
stages:
|
||||
- install
|
||||
- test
|
||||
- cache
|
||||
|
||||
env:
|
||||
global:
|
||||
- TARGET_API=29
|
||||
- BUILD_TOOLS=29.0.2
|
||||
- ADB_INSTALL_TIMEOUT=10
|
||||
- COMPILE_API=29
|
||||
- ANDROID_BUILD_TOOLS=29.0.2
|
||||
- ABI=x86_64
|
||||
- ADB_INSTALL_TIMEOUT=8
|
||||
- ANDROID_HOME=${HOME}/android-sdk
|
||||
- ANDROID_TOOLS_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip"
|
||||
- EMU_FLAVOR=default # use google_apis flavor if no default flavor emulator
|
||||
- GRAVIS="https://raw.githubusercontent.com/DanySK/Gravis-CI/master/"
|
||||
- JDK="1.8"
|
||||
- TOOLS=${ANDROID_HOME}/tools
|
||||
# PATH order is incredibly important. e.g. the 'emulator' script exists in more than one place!
|
||||
- PATH=${ANDROID_HOME}:${ANDROID_HOME}/emulator:${TOOLS}:${TOOLS}/bin:${ANDROID_HOME}/platform-tools:${PATH}
|
||||
matrix:
|
||||
- EMULATOR_API=$TARGET_API ANDROID_ABI=armeabi-v7a
|
||||
android:
|
||||
components:
|
||||
- tools # https://github.com/travis-ci/travis-ci/issues/5049
|
||||
- tools # https://github.com/travis-ci/travis-ci/issues/6040
|
||||
- android-$TARGET_API
|
||||
- sys-img-$ANDROID_ABI-android-$EMULATOR_API
|
||||
- platform-tools
|
||||
- build-tools-$BUILD_TOOLS
|
||||
- extra-android-m2repository
|
||||
- extra-google-m2repository
|
||||
- API=29
|
||||
|
||||
before_install:
|
||||
- echo no | android create avd --force -n test -t android-$EMULATOR_API --abi $ANDROID_ABI
|
||||
- emulator -avd test -no-skin -no-audio -no-window &
|
||||
# This section may run on all platforms, and may run for unit tests or for coverage finalization
|
||||
# It should not make assumptions about os platform or desired tool installation
|
||||
|
||||
# Set up JDK 8 for Android SDK - Java is universally needed: codacy, unit tests, emulators
|
||||
- curl "${GRAVIS}.install-jdk-travis.sh" --output ~/.install-jdk-travis.sh
|
||||
- export TARGET_JDK="${JDK}"
|
||||
- JDK="1.8"
|
||||
- source ~/.install-jdk-travis.sh
|
||||
|
||||
# Set up Android SDK - this is needed everywhere but coverage finalization, so toggle on that
|
||||
- wget -q "${ANDROID_TOOLS_URL}" -O android-sdk-tools.zip
|
||||
- unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}
|
||||
- rm android-sdk-tools.zip
|
||||
- mkdir ~/.android # avoid harmless sdkmanager warning
|
||||
- echo 'count=0' > ~/.android/repositories.cfg # avoid harmless sdkmanager warning
|
||||
- yes | sdkmanager --licenses >/dev/null # accept all sdkmanager warnings
|
||||
- echo y | sdkmanager --no_https "platform-tools" >/dev/null
|
||||
- echo y | sdkmanager --no_https "tools" >/dev/null # A second time per Travis docs, gets latest versions
|
||||
- echo y | sdkmanager --no_https "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null # Implicit gradle dependency - gradle drives changes
|
||||
- echo y | sdkmanager --no_https "platforms;android-${COMPILE_API}" >/dev/null # We need the API of the current compileSdkVersion from gradle.properties
|
||||
|
||||
install:
|
||||
# In our setup, install only runs on matrix entries we want full emulator tests on
|
||||
# That only happens currently on linux, so this section can assume linux + emulator is desired
|
||||
# Download required emulator tools
|
||||
- echo y | sdkmanager --no_https "platforms;android-$API" >/dev/null # We need the API of the emulator we will run
|
||||
- echo y | sdkmanager --no_https "emulator" >/dev/null
|
||||
- echo y | sdkmanager --no_https "system-images;android-$API;$EMU_FLAVOR;$ABI" >/dev/null # install our emulator
|
||||
|
||||
# Set up KVM on linux for hardware acceleration. Manually here so it only happens for emulator tests, takes ~30s
|
||||
- sudo -E apt-get -yq --no-install-suggests --no-install-recommends install bridge-utils libpulse0 libvirt-bin qemu-kvm virtinst ubuntu-vm-builder
|
||||
- sudo adduser $USER libvirt
|
||||
- sudo adduser $USER kvm
|
||||
|
||||
# Create an Android emulator
|
||||
- echo no | avdmanager create avd --force -n test -k "system-images;android-$API;$EMU_FLAVOR;$ABI" -c 10M
|
||||
- |
|
||||
EMU_PARAMS="-verbose -no-snapshot -no-window -camera-back none -camera-front none -selinux permissive -qemu -m 2048"
|
||||
EMU_COMMAND="emulator"
|
||||
# This double "sudo" monstrosity is used to have Travis execute the
|
||||
# emulator with its new group permissions and help preserve the rule
|
||||
# of least privilege.
|
||||
sudo -E sudo -u $USER -E bash -c "${ANDROID_HOME}/emulator/${EMU_COMMAND} -avd test ${AUDIO} ${EMU_PARAMS} &"
|
||||
|
||||
# Wait for emulator to be ready
|
||||
- ./.wait_for_emulator.sh
|
||||
- adb shell input keyevent 82 &
|
||||
|
||||
# Switch back to our target JDK version to build and run tests
|
||||
- JDK="${TARGET_JDK}"
|
||||
- source ~/.install-jdk-travis.sh
|
||||
|
||||
script:
|
||||
- ./gradlew :app:lintGoogleplayRelease
|
||||
- ./gradlew -Pcoverage :app:createGoogleplayDebugAndroidTestCoverageReport
|
||||
|
||||
before_cache:
|
||||
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
||||
- curl "${GRAVIS}.clean_gradle_cache.sh" --output ~/.clean_gradle_cache.sh
|
||||
- bash ~/.clean_gradle_cache.sh > /dev/null
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.gradle/caches/
|
||||
- $HOME/.gradle/wrapper/
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
|
@ -1,17 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
set +e
|
||||
|
||||
bootanim=""
|
||||
failcounter=0
|
||||
until [[ "$bootanim" =~ "stopped" ]] || [[ "$bootanim" =~ "running" ]]; do
|
||||
bootanim=`adb -e shell getprop init.svc.bootanim 2>&1`
|
||||
echo "$bootanim"
|
||||
if [[ "$bootanim" =~ "not found" ]]; then
|
||||
timeout_in_sec=600 # 10 minutes
|
||||
|
||||
until [[ "$bootanim" =~ "stopped" ]]; do
|
||||
bootanim=`adb -e shell getprop init.svc.bootanim 2>&1 &`
|
||||
if [[ "$bootanim" =~ "device not found" || "$bootanim" =~ "device offline"
|
||||
|| "$bootanim" =~ "running" || "$bootanim" =~ "error: no emulators found" ]]; then
|
||||
let "failcounter += 1"
|
||||
if [[ $failcounter -gt 3 ]]; then
|
||||
echo "Failed to start emulator"
|
||||
echo "Waiting for emulator to start"
|
||||
if [[ $failcounter -gt timeout_in_sec ]]; then
|
||||
echo "Timeout ($timeout_in_sec seconds) reached; failed to start emulator"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
echo "Done"
|
||||
|
||||
echo "Emulator is ready"
|
||||
|
||||
|
Loading…
Reference in New Issue