diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7d3c4aae1..7980d12d6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,15 +3,21 @@ stages: - deploy .base: - image: registry.gitlab.com/fdroid/ci-images-client:latest + image: registry.gitlab.com/fdroid/fdroidserver:buildserver-bullseye before_script: + - test -e /etc/apt/sources.list.d/bullseye-backports.list + || echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list + - apt update + - apt-get -qy install -t bullseye-backports --no-install-recommends git sdkmanager + + - test -n "$ANDROID_HOME" || source /etc/profile.d/bsenv.sh + + - export cmdline_tools_latest="$ANDROID_HOME/cmdline-tools/latest/bin" + - test -e $cmdline_tools_latest && export PATH="$cmdline_tools_latest:$PATH" + - export GRADLE_USER_HOME=$PWD/.gradle - export ANDROID_COMPILE_SDK=`sed -n 's,.*compileSdkVersion\s*\([0-9][0-9]*\).*,\1,p' app/build.gradle` - - alias sdkmanager="sdkmanager --no_https" - echo y | sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" > /dev/null - # limit RAM usage for all gradle runs - - export maxmem=$(expr $(sed -n 's,^MemAvailable:[^0-9]*\([0-9][0-9]*\)[^0-9]*$,\1,p' /proc/meminfo) / 1024 / 2 / 1024 \* 1024) - - printf "\norg.gradle.jvmargs=-Xmx${maxmem}m -XX:MaxPermSize=${maxmem}m\norg.gradle.daemon=false\norg.gradle.parallel=false\n" >> gradle.properties after_script: # this file changes every time but should not be cached - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock @@ -66,10 +72,6 @@ errorprone: extends: .base stage: test script: - - apt-get update - - apt-get install -t stretch-backports openjdk-11-jdk-headless - - update-java-alternatives --set java-1.11.0-openjdk-amd64 - - export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64 - cat config/errorprone.gradle >> app/build.gradle - ./gradlew -Dorg.gradle.dependency.verification=lenient assembleDebug @@ -89,7 +91,6 @@ errorprone: - export AVD_PACKAGE="system-images;android-${AVD_SDK};${AVD_TAG};${AVD_ARCH}" - echo $AVD_PACKAGE - - alias sdkmanager - ls -l ~/.android - adb start-server @@ -104,10 +105,38 @@ errorprone: fi - ./gradlew connectedFullDebugAndroidTest $FLAG -no-accel 22 default x86: - <<: *test-template - <<: *connected-template +.kvm-connected-template: &kvm-connected-template + extends: .base + image: briar/ci-image-android-emulator:latest + tags: + - kvm + script: + - ./gradlew assembleFullDebug + - export AVD_SDK=`echo $CI_JOB_NAME | awk '{print $2}'` + - export AVD_TAG=`echo $CI_JOB_NAME | awk '{print $3}'` + - export AVD_ARCH=`echo $CI_JOB_NAME | awk '{print $4}'` + - export AVD_PACKAGE="system-images;android-${AVD_SDK};${AVD_TAG};${AVD_ARCH}" + - echo $AVD_PACKAGE + - $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager --verbose delete avd --name "$NAME_AVD" + - export AVD="$AVD_PACKAGE" + - echo y | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install "$AVD" + - echo no | $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager --verbose create avd --name "$NAME_AVD" --package "$AVD" --device "pixel" + - start-emulator.sh + - ./gradlew installFullDebug + - adb shell am start -n org.fdroid.fdroid.debug/org.fdroid.fdroid.views.main.MainActivity + - if [ $AVD_SDK -lt 25 ] || ! emulator -accel-check; then + export FLAG=-Pandroid.testInstrumentationRunnerArguments.notAnnotation=androidx.test.filters.LargeTest; + fi + - ./gradlew connectedFullDebugAndroidTest $FLAG + + +# Since jobs that require KVM need special runners, these jobs are +# opt-in. To set up your fork to run KVM jobs, go to Settings -> +# CI/CD -> Variables, and add a variable called RUN_KVM_JOBS with a +# value of "1". For example, this is for the canonical repo: +# +# https://gitlab.com/fdroid/fdroidclient/-/settings/ci_cd#js-cicd-variables-settings .kvm-template: &kvm-template tags: - fdroid @@ -116,11 +145,13 @@ no-accel 22 default x86: variables: - $RUN_KVM_JOBS <<: *test-template - <<: *connected-template + <<: *kvm-connected-template -kvm 29 microg x86_64: +kvm 22 default x86: + <<: *test-template <<: *kvm-template + deploy_nightly: extends: .base stage: deploy @@ -128,6 +159,7 @@ deploy_nightly: - master script: - test -z "$DEBUG_KEYSTORE" && exit 0 + - apt-get install -t bullseye-backports fdroidserver - sed -i 's,.*,F-Nightly,' app/src/main/res/values*/strings.xml