diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 94e55cb8f..777c0a357 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,12 +5,17 @@ cache: - .gradle/wrapper - .gradle/caches +stages: + - test + - deploy + 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 --silent update sdk --no-ui --filter android-${ANDROID_COMPILE_SDK} test: + stage: test script: - export EXITVALUE=0 - ./tools/check-format-strings.py @@ -33,6 +38,7 @@ test: - exit $EXITVALUE connected10: + stage: test variables: AVD_SDK: "10" script: @@ -54,6 +60,7 @@ connected10: done connected24: + stage: test variables: AVD_SDK: "24" script: @@ -77,6 +84,13 @@ connected24: done - exit $EXITVALUE +deploy_nightly: + stage: deploy + only: + - master + script: + - "[ -z \"$DEBUG_KEYSTORE\" ] || ./config/nightly-repo/deploy" + after_script: # this file changes every time but should not be cached - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock diff --git a/config/nightly-repo/config.py b/config/nightly-repo/config.py new file mode 100644 index 000000000..65eaeed10 --- /dev/null +++ b/config/nightly-repo/config.py @@ -0,0 +1,18 @@ + +repo_icon = "fdroid-icon.png" +repo_description = """ +This repo is nightly builds, it should only be used for testing! +""" + +archive_older = 10 +archive_icon = "fdroid-icon.png" +archive_description = """ +The repository of older versions of applications from the main repository. +""" + +make_current_version_link = False +accepted_formats = ('txt', 'yml') +repo_keyalias = "androiddebugkey" +keystorepass = "android" +keypass = "android" +keydname = "CN=Android Debug,O=Android,C=US" diff --git a/config/nightly-repo/deploy b/config/nightly-repo/deploy new file mode 100755 index 000000000..b6520fcfd --- /dev/null +++ b/config/nightly-repo/deploy @@ -0,0 +1,86 @@ +#!/bin/bash + +set -e +set -x + +echo "deb http://deb.debian.org/debian stretch-backports main" \ + > /etc/apt/sources.list.d/stretch-backports.list +apt-get update +apt-get install -y --no-install-recommends -t stretch-backports \ + fdroidserver openssh-client rsync python3-qrcode + +db=`sed -n 's,.*DB_VERSION *= *\([0-9][0-9]*\).*,\1,p' app/src/main/java/org/fdroid/fdroid/data/DBHelper.java` +count=`git rev-list --first-parent --count HEAD` +sed -i "s,versionCode *[0-9][0-9]*.*,versionCode `printf '%d%05d' $db $count`," app/build.gradle + +repo_git_base=${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}-nightly +repo_base=https://gitlab.com/${repo_git_base} +repo_url=${repo_base}/raw/master/fdroid/repo +archive_url=${repo_base}/raw/master/fdroid/archive +mkdir -p $HOME/.android +keystore=$HOME/.android/debug.keystore +echo "repo_name = '$repo_git_base'" >> config/nightly-repo/config.py +echo "repo_url = '$repo_url'" >> config/nightly-repo/config.py +echo "archive_name = '$repo_git_base archive'" >> config/nightly-repo/config.py +echo "archive_url = '$archive_url'" >> config/nightly-repo/config.py +echo "servergitmirrors = 'git@gitlab.com:$repo_git_base'" >> config/nightly-repo/config.py +echo "keystore = '$keystore'" >> config/nightly-repo/config.py +chmod 0600 config/nightly-repo/config.py + +sed -i -e '/<\/string-array>/d' -e '/<\/resources>/d' \ + app/src/main/res/values/default_repos.xml +echo "$repo_git_base" >> app/src/main/res/values/default_repos.xml +echo "$repo_url" >> app/src/main/res/values/default_repos.xml +cat config/nightly-repo/repo.xml >> app/src/main/res/values/default_repos.xml +echo "" >> app/src/main/res/values/default_repos.xml + +set +x # do not show contents of secret variables! +echo $DEBUG_KEYSTORE | base64 --decode --ignore-garbage > $keystore +set -x + +./gradlew assembleDebug -PdisablePreDex + +mkdir config/nightly-repo/repo/ +mv app/build/outputs/apk/app-debug.apk config/nightly-repo/repo/ +cd config/nightly-repo + +pw=android +alias=androiddebugkey +keytool -v -importkeystore \ + -srckeystore $keystore -srcalias $alias -srcstorepass $pw -srckeypass $pw \ + -destkeystore keystore.p12 -destalias $alias -deststorepass $pw -destkeypass $pw -deststoretype PKCS12 + +ssh_private_key=$HOME/.ssh/id_rsa +mkdir -p $(dirname $ssh_private_key) +openssl pkcs12 -in keystore.p12 -out key.pem -passin pass:$pw -passout pass:$pw +openssl rsa -in key.pem -out ${ssh_private_key} -passin pass:$pw +chmod 600 ${ssh_private_key} +ssh-keygen -y -f ${ssh_private_key} > ${ssh_private_key}.pub +echo "SSH public deploy key:" +cat ${ssh_private_key}.pub +eval $(ssh-agent -s) +ssh-add ${ssh_private_key} + +if git clone $repo_base git-mirror; then + cd git-mirror + git remote rm origin + qr $repo_url > qr.png + echo "# $repo_git_base" > README.md + echo "[![$repo_url](qr.png)]($repo_url)" >> README.md + printf "\n\nLast updated: " >> README.md + date >> README.md + git add README.md + git config user.email "$CI_PROJECT_NAMESPACE@$CI_PROJECT_NAME" + git config user.name "$CI_PROJECT_NAMESPACE $CI_PROJECT_NAME" + git commit README.md -m README + cd .. +fi +if [ -d git-mirror/fdroid/repo ]; then + rsync -axv git-mirror/fdroid/repo/ repo/ +fi + +fdroid update --rename-apks + +ssh-add -l +echo -e "Host *\n\tStrictHostKeyChecking no\n\n" >> ~/.ssh/config +fdroid server update --verbose diff --git a/config/nightly-repo/fdroid-icon.png b/config/nightly-repo/fdroid-icon.png new file mode 100644 index 000000000..0c0d41738 Binary files /dev/null and b/config/nightly-repo/fdroid-icon.png differ diff --git a/config/nightly-repo/metadata/org.fdroid.fdroid.yml b/config/nightly-repo/metadata/org.fdroid.fdroid.yml new file mode 100644 index 000000000..3b037784e --- /dev/null +++ b/config/nightly-repo/metadata/org.fdroid.fdroid.yml @@ -0,0 +1,15 @@ +Categories: System +License: GPL-3.0+ +WebSite: https://f-droid.org +SourceCode: https://gitlab.com/fdroid/fdroidclient +IssueTracker: https://gitlab.com/fdroid/fdroidclient/issues +Changelog: https://gitlab.com/fdroid/fdroidclient/raw/HEAD/CHANGELOG.md +Donate: https://f-droid.org/about +FlattrID: 343053 +Bitcoin: 15u8aAPK4jJ5N8wpWJ5gutAyyeHtKX5i18 + +AutoName: F-Droid Nightly +Summary: Nightly test build of F-Droid + +RepoType: srclib +Repo: fdroidclient diff --git a/config/nightly-repo/repo.xml b/config/nightly-repo/repo.xml new file mode 100644 index 000000000..30bfa0ebb --- /dev/null +++ b/config/nightly-repo/repo.xml @@ -0,0 +1,14 @@ + + This repo is nightly builds of F-Droid, it should only be used for testing! + + 13 + + 1 + + 5 + + ignore + + + 308201e53082014ea0030201020204503d3768300d06092a864886f70d01010505003037310b30090603550406130255533110300e060355040a1307416e64726f6964311630140603550403130d416e64726f6964204465627567301e170d3132303832383231323630305a170d3432303832313231323630305a3037310b30090603550406130255533110300e060355040a1307416e64726f6964311630140603550403130d416e64726f696420446562756730819f300d06092a864886f70d010101050003818d0030818902818100b5ba553eacbc4de5b45af812d9695140dafbc0a8a9c13ac9a7e24b2665371ce5072e5dfef60f705d58fdb2d0e2190264e42d83a6fd80cfd54690e9e3c3735fa8dce684ee99ac879b1b11e1c8a9cbb9dc6b23064b025f9db7dc87d48ee4bc038affd80d854c0ed5d88d93d6e8127e62344727e23886b97f5d10e2265c9c9b5bd10203010001300d06092a864886f70d0101050500038181006dae218bdbff79801b1935448c663319843a7b2eb5f5c8837f010e58da25ba4d23bc6650b53c93f9c42b379299f4659b4cc3c505aa1a7c08c8a1a58fffe78d29df2cf69b27c34a0ab5f44cf7e323e34f8252d9f6e4d67171ce38bab64623910811dae6b12203385b32d962dbd51e8a6b0dcab3fa4d1f4020cee69a5f3c6ddf69 +