#!/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