128 lines
4.6 KiB
YAML
128 lines
4.6 KiB
YAML
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:
|
||
- signed/
|
||
when: always
|
||
only:
|
||
- tags
|
||
cache:
|
||
key: "$CI_JOB_NAME"
|
||
paths:
|
||
- .gradle
|
||
- .android
|
||
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
|
||
- echo '32fce6628848f799b0ad3205ae8db67d0d828c10ffe62b748a7c0d9f4a5d9ee0 /vagrant/cache/gradle-5.6.2-bin.zip' | sha256sum -c
|
||
- bash fdroidserver/buildserver/provision-gradle
|
||
- bash fdroidserver/buildserver/provision-apt-get-install https://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
|
||
# create a keystore if we don’t have one
|
||
- ls .android || mkdir .android
|
||
- ls .android/debug.keystore || keytool -genkey -v -keystore .android/debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname 'C=US, O=Android, CN=Android Debug'
|
||
# sign the apk
|
||
- cp -R unsigned signed
|
||
- jarsigner -verbose -keystore .android/debug.keystore -storepass android -keypass android signed/*.apk androiddebugkey
|