mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 20:03:05 +02:00
3d880a62a4
This allows us to leverage the emulator acceleration brought to the other Android APIs we support.
132 lines
4.6 KiB
YAML
132 lines
4.6 KiB
YAML
sudo: true
|
|
language: generic
|
|
dist: bionic
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- bridge-utils
|
|
- libpulse0
|
|
- libvirt-bin
|
|
- qemu-kvm
|
|
- virtinst
|
|
- ubuntu-vm-builder
|
|
|
|
env:
|
|
global:
|
|
- 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:
|
|
#- API=15 # only runs locally. Create+Start once from AndroidStudio to init sdcard. Then only from command-line w/-engine classic
|
|
- API=16 ABI=x86 AUDIO=-no-audio
|
|
- API=17 ABI=x86
|
|
- API=18 ABI=x86 # API18 has started being flaky
|
|
#- API=19 ABI=armeabi-v7a # Fails: kernel/emulator mismatch, and emulator-29+ doesn't support "-engine classic" to fix
|
|
# API 20 was Android Wear only
|
|
- API=21
|
|
- API=22
|
|
- API=23
|
|
- API=24
|
|
- API=25
|
|
#- API=26 # Fails with unrecognized tests? orchestrator change or something?
|
|
- API=27
|
|
- API=28
|
|
- API=29
|
|
|
|
jobs:
|
|
fast_finish: true # We can report success without waiting for jobs that we
|
|
# allow / expect to fail.
|
|
include:
|
|
- env: API=24 JDK="1.11"
|
|
# The test stage is implicit, we only need to define a post-test stage for codacy finalization
|
|
- stage: finalize_coverage
|
|
env: FINALIZE_COVERAGE=TRUE API=NONE
|
|
install: skip
|
|
script: echo finalize codacy coverage uploads
|
|
allow_failures:
|
|
- env: API=24 JDK="1.11"
|
|
|
|
before_install:
|
|
# Set up KVM
|
|
- sudo adduser $USER libvirt
|
|
- sudo adduser $USER kvm
|
|
|
|
# Set up JDK 8 for Android SDK
|
|
- 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
|
|
- wget -q "${ANDROID_TOOLS_URL}" -O android-sdk-tools.zip
|
|
- unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}
|
|
- rm android-sdk-tools.zip
|
|
|
|
# Avoid harmless sdkmanager warning
|
|
- mkdir ~/.android
|
|
- echo 'count=0' > ~/.android/repositories.cfg
|
|
|
|
# Accept all Android license agreements
|
|
- yes | sdkmanager --licenses
|
|
|
|
install:
|
|
# Download SDK tools
|
|
- echo y | sdkmanager "platform-tools" >/dev/null
|
|
- echo y | sdkmanager "tools" >/dev/null # A second time per Travis docs, gets latest versions
|
|
- echo y | sdkmanager "build-tools;28.0.3" >/dev/null # Implicit gradle dependency - gradle drives changes
|
|
- echo y | sdkmanager "platforms;android-$API" >/dev/null # We need the API of the emulator we will run
|
|
- echo y | sdkmanager "platforms;android-28" >/dev/null # We need the API of the current compileSdkVersion from gradle.properties
|
|
- echo y | sdkmanager "emulator" >/dev/null
|
|
- echo y | sdkmanager "extras;android;m2repository" >/dev/null
|
|
- echo y | sdkmanager "system-images;android-$API;$EMU_FLAVOR;$ABI" >/dev/null # install our emulator
|
|
|
|
# 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"
|
|
if [[ $ABI =~ "x86" ]]; then
|
|
EMU_COMMAND="emulator-headless"
|
|
fi
|
|
# 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
|
|
- ./tools/android-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 jacocoTestReport # This produces an error while doing the API getprop on API 28...
|
|
|
|
after_success:
|
|
- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash tools/upload-codacy-report.sh; fi
|
|
|
|
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
|
|
|
|
cache:
|
|
directories:
|
|
- $HOME/.gradle/caches/
|
|
- $HOME/.gradle/wrapper/
|
|
|
|
notifications:
|
|
email:
|
|
- flerda+ankidroid-continuous@gmail.com
|
|
|