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.
soxx 6 years ago
parent 220336c908
commit 458ddb4068
  1. 20
      Dockerfile
  2. 22
      build.sh
  3. 23
      entrypoint.sh

@ -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"]

@ -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."

@ -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
Loading…
Cancel
Save