| stages: |
| - test |
| - deploy |
| |
| .base: |
| image: registry.gitlab.com/fdroid/ci-images-client:latest |
| 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_HOME/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" > /dev/null |
| - export ANDROID_BUILD_TOOLS=`sed -n "s,.*buildToolsVersion\s*'\([0-9][0-9.]*\)'.*,\1,p" app/build.gradle` |
| - echo y | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" > /dev/null |
| - apt-get update && apt-get -y install gnupg |
| 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/ |
| cache: |
| paths: |
| - .gradle/wrapper |
| - .gradle/caches |
| |
| .test-template: &test-template |
| extends: .base |
| stage: test |
| artifacts: |
| name: "${CI_PROJECT_PATH}_${CI_JOB_STAGE}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}" |
| paths: |
| - kernel.log |
| - logcat.txt |
| - app/core* |
| - app/*.log |
| - app/build/reports |
| - app/build/outputs/*ml |
| - app/build/outputs/apk |
| expire_in: 1 week |
| when: on_failure |
| after_script: |
| - echo "Download debug artifacts from https://gitlab.com/${CI_PROJECT_PATH}/-/jobs" |
| |
| |
| build_on_debian: |
| image: debian:stretch |
| only: |
| - branches |
| variables: |
| ANDROID_HOME: /usr/lib/android-sdk |
| before_script: |
| - echo 'skipping sdkmanager, deps come from apt-get' |
| script: |
| - printf 'APT::Install-Recommends "0";\nAPT::Install-Suggests "0";\n' |
| > /etc/apt/apt.conf.d/99no-install-recommends |
| - printf 'APT::Acquire::Retries "20";\n' |
| > /etc/apt/apt.conf.d/99acquire-retries |
| - printf 'APT::Get::Assume-Yes "true";\n' |
| > /etc/apt/apt.conf.d/99assumeyes |
| - apt-get update |
| - apt-get upgrade |
| - apt-get install git wget |
| - apt-get install --install-recommends |
| android-sdk |
| android-sdk-platform-23 |
| gradle-debian-helper |
| libgradle-android-plugin-java |
| - wget --no-verbose http://dl.google.com/android/repository/platform-25_r03.zip |
| - unzip -q platform-25_r03.zip |
| - mv android-7.1.1 $ANDROID_HOME/platforms/platform-25 |
| - mkdir -p $ANDROID_HOME/licenses/ |
| - echo '24333f8a63b6825ea9c5514f83c2829b004d1fee' |
| > $ANDROID_HOME/licenses/android-sdk-license |
| - sed -i |
| -e "s,jcenter(),maven { url 'file:///usr/share/maven-repo' }," |
| build.gradle app/build.gradle |
| - mkdir ~/.android |
| - gradle assembleDebug |
| artifacts: |
| name: "${CI_PROJECT_PATH}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}_${CI_JOB_NAME}" |
| paths: |
| - app/build/outputs/apk/*-debug.apk |
| expire_in: 1 week |
| when: on_success |
| after_script: |
| - echo "Download debug artifacts from https://gitlab.com/${CI_PROJECT_PATH}/-/jobs" |
| |
| test: |
| extends: .base |
| only: |
| - branches |
| script: |
| - ./gradlew checkstyle |
| - ./gradlew assembleDebug |
| - ./create_ota.sh debug |
| - printf "key.store=${HOME}/.android/debug.keystore\nkey.store.password=android\nkey.alias=androiddebugkey\nkey.alias.password=android\n" > signing.properties |
| - ./create_ota.sh release |
| # always report on lint errors to the build log |
| - sed -i -e 's,textReport .*,textReport true,' app/build.gradle |
| - ./gradlew build || { |
| for log in app/build/reports/*ests/*/*ml; do |
| echo "read $log here:"; |
| cat "$log" | curl --silent -F 'clbin=<-' https://clbin.com; |
| done; |
| exit 1; |
| } |
| - echo "use versionCode that is known to exist on f-droid.org for test:" |
| - apt-get -qy install --no-install-recommends jq |
| - wget --quiet --tries=0 https://f-droid.org/repo/index-v1.jar |
| - versionCode=`unzip -qqc index-v1.jar index-v1.json |
| | jq '.packages."org.fdroid.fdroid.privileged"[0].versionCode'` |
| - sed -i 's,versionCode="[^"]*",versionCode="'$versionCode'",' app/src/main/AndroidManifest.xml |
| - ./create_ota.sh release binaries |
| artifacts: |
| name: "${CI_PROJECT_PATH}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}_${CI_JOB_NAME}" |
| paths: |
| - app/build/distributions/*-debug.zip |
| expire_in: 2 months |
| when: on_success |
| after_script: |
| - echo "Download debug artifacts from https://gitlab.com/${CI_PROJECT_PATH}/-/jobs" |
| |
| # Run the tests in the emulator. Each step is broken out to run on |
| # its own since the CI runner can have limited RAM, and the emulator |
| # can take a while to start. |
| # |
| # once these prove stable, the task should be switched to |
| # connectedCheck to test all the build flavors |
| .connected-template: &connected-template |
| extends: .base |
| script: |
| - ./gradlew assembleDebug |
| - 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 |
| |
| - adb start-server |
| - start-emulator |
| - wait-for-emulator |
| - adb devices |
| - adb shell input keyevent 82 & |
| - ./gradlew installDebug |
| - ./gradlew connectedCheck |
| |
| no-accel 22 default x86: |
| only: |
| - branches |
| <<: *test-template |
| <<: *connected-template |
| |
| |
| deploy_nightly: |
| extends: .base |
| stage: deploy |
| only: |
| refs: |
| - master |
| variables: |
| - $DEBUG_KEYSTORE |
| script: |
| - sed -i 's,F-Droid,F-Nightly,i' app/src/main/res/values*/strings.xml |
| - export currentVersionCode=$(grep -Eo '[1-9][0-9]{3,}' app/src/main/AndroidManifest.xml) |
| - export versionCode=`printf '%d%05d' $currentVersionCode $(date '+%s'| cut -b4-8)` |
| - sed -i "s,\(\s*android:versionCode=\"\) *[1-9][0-9]*,\1$versionCode," app/src/main/AndroidManifest.xml |
| - sed -Ei 's@(\s*new Pair<>)@ // aosp testkey\n new Pair<>("org.fdroid.fdroid", "a40da80a59d170caa950cf15c18c454d47a39b26989d8b640ecd745ba71bf5dc"),\n new Pair<>("org.fdroid.fdroid.debug", "a40da80a59d170caa950cf15c18c454d47a39b26989d8b640ecd745ba71bf5dc"),\n // fdroidclient-nightly\n new Pair<>("org.fdroid.fdroid.debug", "659e1fd284549f70d13fb02c620100e27eeea3420558cce62b0f5d4cf2b77d84"),\1\n@' app/src/main/java/org/fdroid/fdroid/privileged/ClientWhitelist.java |
| - git diff |
| |
| # build the APKs! |
| - ./gradlew assembleDebug |
| - fdroid nightly -v |