87 lines
3.3 KiB
Plaintext
87 lines
3.3 KiB
Plaintext
![]() |
#!/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 "<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
|