From dc9973cdbca26325ac74433754906a26a9c0b780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 12 May 2016 15:10:38 +0100 Subject: [PATCH 1/7] CI: set up android-17 emulator with the image --- .gitlab-ci.yml | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cbc6dc61c..3fb037ab0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: mvdan/fdroid-ci:client-20160429 +image: mvdan/fdroid-ci:client-20160512 cache: paths: @@ -7,14 +7,11 @@ cache: variables: AVD_SDK: "17" - SKIN: "QVGA" # switch glibc to a memory conserving mode MALLOC_ARENA_MAX: "2" gradle: script: - - echo y | android update sdk --no-ui --filter android-$AVD_SDK - - echo y | android update sdk --no-ui --all --filter sys-img-armeabi-v7a-android-$AVD_SDK - export GRADLE_USER_HOME=$PWD/.gradle # always report on lint errors to the build log - sed -i -e 's,textReport .*,textReport true,' app/build.gradle @@ -26,19 +23,7 @@ gradle: done; exit 1; } - # emulators will only start if they have tiny amounts of RAM - - sed -i -e 's,^hw.ramSize=.*,hw.ramSize=384,' - -e 's,^vm.heapSize=.*,vm.heapSize=48,' - -e 's,^hw.gpu.enabled.*,hw.gpu.enabled = false,' - $ANDROID_HOME/platforms/android-$AVD_SDK/skins/$SKIN/hardware.ini - - echo "hw.gpu.enabled = false" >> - $ANDROID_HOME/platforms/android-$AVD_SDK/skins/$SKIN/hardware.ini - - echo no | android --verbose create avd - --force - --name fcl-test - --skin $SKIN - --target android-$AVD_SDK - - emulator64-arm -avd fcl-test -no-skin -no-audio -no-window & + - 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 From 9d79d372cd32a4d6f50e372324848d35ddb67a52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 12 May 2016 15:18:41 +0100 Subject: [PATCH 2/7] CI: Split build and connectedCheck tasks Advantages: * Failing unit tests don't keep the android tests from running * CI should be overall faster as the tasks get run in parallel and the former `gradle` task was the longest by far This will later simplify the multiplexing of the android tests onto multiple emulators. --- .gitlab-ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3fb037ab0..ab0db1f9c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: # switch glibc to a memory conserving mode MALLOC_ARENA_MAX: "2" -gradle: +build: script: - export GRADLE_USER_HOME=$PWD/.gradle # always report on lint errors to the build log @@ -23,6 +23,10 @@ gradle: done; exit 1; } + +connectedCheck: + script: + - export GRADLE_USER_HOME=$PWD/.gradle - emulator64-arm -avd fcl-test-$AVD_SDK -no-skin -no-audio -no-window & - ./tools/wait-for-emulator - adb shell input keyevent 82 & From 7de5d4d551c4d7b1d528c315b91b864180fe7a9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 12 May 2016 15:21:48 +0100 Subject: [PATCH 3/7] Remove broken test coverage This never worked properly with the Gitlab UI. Now it's even more broken since we run the tests in different jobs. --- .gitlab-ci.yml | 1 - app/build.gradle | 3 --- 2 files changed, 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ab0db1f9c..edf0f8cca 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,7 +42,6 @@ connectedCheck: echo "read $log here:"; cat "$log" | curl --silent -F 'clbin=<-' https://clbin.com; done - - sed -n 's/.*"ctr2">\([0-9]*\)%<.*/Coverage - \1.0% covered\n/p' app/build/reports/coverage/debug/index.html # this file changes every time but should not be cached - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock - exit $EXITVALUE diff --git a/app/build.gradle b/app/build.gradle index e5967b14b..303045455 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -139,9 +139,6 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'src/androidTest/proguard-rules.pro' } - debug { - testCoverageEnabled = true - } } compileOptions { From 8ef32eba0cc4d6241c2c2fe536d536b1c199b191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 12 May 2016 15:23:30 +0100 Subject: [PATCH 4/7] CI: Move variables to connectedCheck AVD_SDK is only used there. And MALLOC_ARENA_MAX was added when the android-17 emulator was added, so it should stay there. --- .gitlab-ci.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index edf0f8cca..f676a6196 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,11 +5,6 @@ cache: - .gradle/wrapper - .gradle/caches -variables: - AVD_SDK: "17" - # switch glibc to a memory conserving mode - MALLOC_ARENA_MAX: "2" - build: script: - export GRADLE_USER_HOME=$PWD/.gradle @@ -25,6 +20,10 @@ build: } connectedCheck: + variables: + AVD_SDK: "17" + # switch glibc to a memory conserving mode + MALLOC_ARENA_MAX: "2" script: - export GRADLE_USER_HOME=$PWD/.gradle - emulator64-arm -avd fcl-test-$AVD_SDK -no-skin -no-audio -no-window & From f02e478cc405f715064591587cea99726df25a2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 12 May 2016 15:32:03 +0100 Subject: [PATCH 5/7] CI: No more need to set ADB_INSTALL_TIMEOUT The default was bumped in the Android plugin version 2.0.0, so we are safe now. --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f676a6196..9cf22bcab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,7 +30,7 @@ connectedCheck: - ./tools/wait-for-emulator - adb shell input keyevent 82 & - export EXITVALUE=0 - - ADB_INSTALL_TIMEOUT=8 ./gradlew connectedCheck -PdisablePreDex || { + - ./gradlew connectedCheck -PdisablePreDex || { adb -e logcat -d '*:E'; echo "get the full logcat here:"; adb -e logcat -d | curl --silent -F 'clbin=<-' https://clbin.com; From 6363e14f10d7e6c66fa59093510ae56dc05f18c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 12 May 2016 15:18:24 +0100 Subject: [PATCH 6/7] CI: Remove lock file after every task I tried using after_script, but it seems to not be supported on gitlab.com's public runners. --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9cf22bcab..65895099f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,6 +18,8 @@ build: done; exit 1; } + # this file changes every time but should not be cached + - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock connectedCheck: variables: @@ -49,11 +51,15 @@ pmd: script: - export GRADLE_USER_HOME=$PWD/.gradle - ./gradlew pmd -PdisablePreDex + # this file changes every time but should not be cached + - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock checkstyle: script: - export GRADLE_USER_HOME=$PWD/.gradle - ./gradlew checkstyle -PdisablePreDex + # this file changes every time but should not be cached + - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock tools: script: From 03da7366c99109f83c8a475e94b0932b3c8df063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 12 May 2016 15:41:46 +0100 Subject: [PATCH 7/7] CI: Don't use the confusing "build" gradle task Be more explicit about what we're running. This also means that we wont run the "read log here" stuff if the build failed, which didn't make any sense. That should only be run if the unit tests fail. --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 65895099f..85cfff9d0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,10 +8,11 @@ cache: build: script: - export GRADLE_USER_HOME=$PWD/.gradle + - ./gradlew assemble -PdisablePreDex # always report on lint errors to the build log - sed -i -e 's,textReport .*,textReport true,' app/build.gradle - # 'build' means assemble and check - - ./gradlew build -PdisablePreDex || { + - ./gradlew lint -PdisablePreDex + - ./gradlew test -PdisablePreDex || { for log in app/build/reports/*ests/*/*ml; do echo "read $log here:"; cat "$log" | curl --silent -F 'clbin=<-' https://clbin.com;