image: reactivecircus/android-emulator-23:latest variables: API_LEVEL: "23" ARCH: "x86" TARGET: "default" before_script: - export GRADLE_USER_HOME=`pwd`/.gradle cache: paths: - .gradle/wrapper - .gradle/caches # Basic android and gradle stuff # Check linting lintDebug: interruptible: true stage: build script: - ./gradlew checkLicenses - ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint # Make Project assembleDebug: interruptible: true stage: build script: - ./gradlew assembleDebug artifacts: paths: - app/build/outputs/ # Run all tests, if any fails, interrupt the pipeline(fail it) debugTests: interruptible: true stage: test script: - ./gradlew -Pci --console=plain :app:testDebug -x lint emulatorTest: interruptible: true stage: test script: - echo no | avdmanager create avd --force --name "api-${API_LEVEL}" --abi "${TARGET}/${ARCH}" --package "system-images;android-${API_LEVEL};${TARGET};${ARCH}" - $ANDROID_SDK_ROOT/emulator/emulator -avd "api-${API_LEVEL}" -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -camera-back none & - chmod +x android-wait-for-emulator.sh - ./gradlew build -x lint - ./android-wait-for-emulator.sh - adb shell settings put global window_animation_scale 0.0 - adb shell settings put global transition_animation_scale 0.0 - adb shell settings put global animator_duration_scale 0.0 - ./gradlew build connectedCheck connectedStagingAndroidTest jacocoTestReport -x lint - cat app/build/reports/jacoco/jacocoTestReport/html/index.html | grep -o 'Total[^%]*%' artifacts: when: always paths: - ./app/build/reports/jacoco/jacocoTestReport/ expire_in: 1 week fdroid build: image: registry.gitlab.com/fdroid/ci-images-client:latest allow_failure: true artifacts: paths: - unsigned/ when: always only: - tags cache: key: "$CI_JOB_NAME" paths: - .gradle script: # Put the correct versionName and versionCode in the .fdroid.yml - sed -e "s/\${versionName}/$(grep "versionName " app/build.gradle | awk '{print $2}')/" -e "s/\${versionCode}/$(grep "versionCode" app/build.gradle | awk '{print $2}')/" .fdroid.yml.template > .fdroid.yml - rm .fdroid.yml.template - test -d build || mkdir build - test -d fdroidserver || mkdir fdroidserver - git ls-remote https://gitlab.com/fdroid/fdroidserver.git master - curl --silent https://gitlab.com/fdroid/fdroidserver/-/archive/master/fdroidserver-master.tar.gz | tar -xz --directory=fdroidserver --strip-components=1 - export PATH="`pwd`/fdroidserver:$PATH" - export PYTHONPATH="$CI_PROJECT_DIR/fdroidserver:$CI_PROJECT_DIR/fdroidserver/examples" - export PYTHONUNBUFFERED=true - bash fdroidserver/buildserver/setup-env-vars $ANDROID_HOME - adduser --disabled-password --gecos "" vagrant - ln -s $CI_PROJECT_DIR/fdroidserver /home/vagrant/fdroidserver - mkdir -p /vagrant/cache - wget -q https://services.gradle.org/distributions/gradle-5.6.2-bin.zip --output-document=/vagrant/cache/gradle-5.6.2-bin.zip - bash fdroidserver/buildserver/provision-gradle - bash fdroidserver/buildserver/provision-apt-get-install http://deb.debian.org/debian - source /etc/profile.d/bsenv.sh - apt-get dist-upgrade # install fdroidserver from git, with deps from Debian, until fdroidserver # is stable enough to include all the things needed here - apt-get install -t stretch-backports fdroidserver python3-asn1crypto python3-ruamel.yaml yamllint - apt-get purge fdroidserver - export GRADLE_USER_HOME=$PWD/.gradle # each `fdroid build --on-server` run expects sudo, then uninstalls it - set -x - apt-get install sudo - fdroid fetchsrclibs --verbose # this builds the latest version of the app from its source dir, using the build recipe in .fdroid.yml - fdroid build --verbose --on-server --no-tarball