From be1d7c90bced379ad7405c3f47d64c58b3a40d89 Mon Sep 17 00:00:00 2001 From: soxx Date: Sun, 23 Aug 2020 22:59:19 +0200 Subject: [PATCH] Move APK building into entrypoint The APK is no longer built by building the docker image but by running the docker container. The docker image only provides a build environment for fairemail and is re-usable across multiple builds. --- Dockerfile | 20 ++------------------ build.sh | 22 ++++++++++------------ entrypoint.sh | 23 +++++++++++++++++++++++ 3 files changed, 35 insertions(+), 30 deletions(-) create mode 100755 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 0897c9a..c6e47ad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,22 +15,6 @@ RUN mkdir "$ANDROID_HOME" .android \ && $ANDROID_HOME/tools/bin/sdkmanager --update \ && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses -ADD patches /patches +ADD entrypoint.sh /entrypoint.sh -RUN mkdir /apk - -WORKDIR /app - -ARG VERSION -ARG KEYSTORE_FILE -ARG KEYSTORE_PROPERTIES - -RUN curl -OL https://github.com/M66B/FairEmail/archive/$VERSION.tar.gz \ - && tar xvzf $VERSION.tar.gz \ - && cd FairEmail-$VERSION \ - && echo $KEYSTORE_FILE | base64 -d > keystore.jks \ - && echo $KEYSTORE_PROPERTIES | base64 -d > keystore.properties -RUN cd FairEmail-$VERSION \ - && (for patch in /patches/*; do patch -p0 < $patch; done) \ - && gradle --no-daemon assemble -RUN cp FairEmail-$VERSION/app/build/outputs/apk/github/release/FairEmail-v$VERSION-github-release.apk /apk +ENTRYPOINT ["/bin/sh", "/entrypoint.sh"] diff --git a/build.sh b/build.sh index 8fee13a..19bf895 100755 --- a/build.sh +++ b/build.sh @@ -19,23 +19,21 @@ if rsync sillywalk.de:/srv/www/sillywalk.de/root/releases/$APK_FILENAME; then exit 1 fi -docker build \ - --build-arg VERSION=$VERSION \ - --build-arg KEYSTORE_FILE=$(cat $ANDROID_KEYSTORE_FILE | base64 -w0) \ - --build-arg KEYSTORE_PROPERTIES=$(envsubst < templates/keystore.properties | base64 -w0) \ - -t fairemail-apk \ - . - -DOCKER_CONTAINER_ID=$(docker create fairemail-apk) +KEYSTORE_FILE=$(cat $ANDROID_KEYSTORE_FILE | base64 -w0) \ +KEYSTORE_PROPERTIES=$(envsubst < templates/keystore.properties | base64 -w0) \ +mkdir -p apk trap "{ - rm -f $APK_FILENAME; - docker rm $DOCKER_CONTAINER_ID; + rm -rf apk; }" EXIT -docker cp $DOCKER_CONTAINER_ID:/apk/$APK_FILENAME . +docker build -t fairemail-apk-builder . +docker run --rm -it \ + -v $(pwd)/patches:/patches:ro \ + -v $(pwd)/apk:/apk:rw \ + fairemail-apk-builder $VERSION $KEYSTORE_FILE $KEYSTORE_PROPERTIES -UPLOADED=$(rsync -i --ignore-existing $APK_FILENAME sillywalk.de:/srv/www/sillywalk.de/root/releases) +UPLOADED=$(rsync -i --ignore-existing apk/$APK_FILENAME sillywalk.de:/srv/www/sillywalk.de/root/releases) if [ -z "$UPLOADED" ]; then echo "$VERSION already uploaded. Aborting." diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..81cdb34 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +set -eu + +VERSION=$1 +KEYSTORE_FILE=$2 +KEYSTORE_PROPERTIES=$3 + +curl -OL https://github.com/M66B/FairEmail/archive/$VERSION.tar.gz +tar xvzf $VERSION.tar.gz + +cd FairEmail-$VERSION + +echo $KEYSTORE_FILE | base64 -d > keystore.jks +echo $KEYSTORE_PROPERTIES | base64 -d > keystore.properties + +for patch in /patches/*; do + patch -p0 < $patch +done + +gradle --no-daemon assemble + +cp app/build/outputs/apk/github/release/FairEmail-v$VERSION-github-release.apk /apk