
This provides an automatic way to generate updates from each new debug build, it is build from the developer's machine or via the nightly repo.
83 lines
3.1 KiB
Bash
Executable File
83 lines
3.1 KiB
Bash
Executable File
#!/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
|
|
|
|
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 "<item>$repo_git_base</item>" >> app/src/main/res/values/default_repos.xml
|
|
echo "<item>$repo_url</item>" >> app/src/main/res/values/default_repos.xml
|
|
cat config/nightly-repo/repo.xml >> app/src/main/res/values/default_repos.xml
|
|
echo "</string-array></resources>" >> 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)" >> 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
|