BobStore/.gitlab-ci.yml
Hans-Christoph Steiner 5f26a78527 auto-disable preDexLibraries on CI systems
preDexing helps repeat builds run faster, but slows down builds that do
not have any caching.  CI builds start from scratch each time.  Turns
out that GitLab CI, Travis CI, Circle CI, and probably many others all
define the "CI" environment variable, so its easy to detect when running
in a CI environment.  This makes things a lot cleaner.

* https://docs.gitlab.com/ce/ci/variables/README.html
* https://docs.travis-ci.com/user/environment-variables/
* https://circleci.com/docs/2.0/env-vars/
* https://github.com/codepath/android_guides/wiki/Setting-up-Travis-CI
* https://stackoverflow.com/questions/23137764/building-a-debug-apk
2017-10-27 10:54:20 +02:00

98 lines
2.9 KiB
YAML

image: registry.gitlab.com/fdroid/ci-images-client:latest
cache:
paths:
- .gradle/wrapper
- .gradle/caches
stages:
- test
- deploy
before_script:
- export GRADLE_USER_HOME=$PWD/.gradle
- export ANDROID_COMPILE_SDK=`sed -n 's,.*compileSdkVersion\s*\([0-9][0-9]*\).*,\1,p' app/build.gradle`
- echo y | android --silent update sdk --no-ui --filter android-${ANDROID_COMPILE_SDK}
test:
stage: test
script:
- export EXITVALUE=0
- ./tools/check-format-strings.py
- ./tools/remove-unused-and-blank-translations.py
- echo "These are unused or blank translations that should be removed:"
- git --no-pager diff --exit-code || export EXITVALUE=1
- ./gradlew assemble
# always report on lint errors to the build log
- sed -i -e 's,textReport .*,textReport true,' app/build.gradle
- ./gradlew lint
- ./gradlew pmd
- ./gradlew checkstyle
- ./gradlew test || {
for log in app/build/reports/*ests/*/*ml; do
echo "read $log here:";
(cat "$log" | curl --silent -F 'clbin=<-' https://clbin.com) || true;
done;
export EXITVALUE=1;
}
- exit $EXITVALUE
connected10:
stage: test
variables:
AVD_SDK: "10"
script:
- ./gradlew assembleDebug
- emulator64-arm -avd fcl-test-$AVD_SDK -no-skin -no-audio -no-window &
- ./tools/wait-for-emulator
- adb shell input keyevent 82 &
- export EXITVALUE=0
- ./gradlew connectedCheck || {
adb -e logcat -d '*:E';
echo "get the full logcat here:";
(adb -e logcat -d | curl --silent -F 'clbin=<-' https://clbin.com) || true;
export EXITVALUE=1;
}
- for log in app/build/reports/*ests/*/*ml
app/build/outputs/*results*/connected/*.xml; do
echo "read $log here:";
(cat "$log" | curl --silent -F 'clbin=<-' https://clbin.com) || true;
done
connected24:
stage: test
variables:
AVD_SDK: "24"
script:
- ./gradlew assembleDebug
- android list avd
- emulator64-arm -avd fcl-test-$AVD_SDK -no-audio -no-window &
- ./tools/wait-for-emulator
- adb shell input keyevent 82 &
- adb devices
- export EXITVALUE=0
- ./gradlew connectedCheck || {
adb -e logcat -d '*:E';
echo "get the full logcat here:";
(adb -e logcat -d | curl --silent -F 'clbin=<-' https://clbin.com) || true;
export EXITVALUE=1;
}
- for log in app/build/reports/*ests/*/*ml
app/build/outputs/*results*/connected/*.xml; do
echo "read $log here:";
(cat "$log" | curl --silent -F 'clbin=<-' https://clbin.com) || true;
done
- exit $EXITVALUE
deploy_nightly:
stage: deploy
only:
- master
script:
- "[ -z \"$DEBUG_KEYSTORE\" ] || ./config/nightly-repo/deploy"
after_script:
# this file changes every time but should not be cached
- rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
- rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/