From dc0821e69e4463615beba9c14eb8dca279bb6bc2 Mon Sep 17 00:00:00 2001 From: Gioacchino Mazzurco Date: Thu, 7 Apr 2022 11:00:27 +0200 Subject: [PATCH] Add script to prepare GitalbCI Android base images --- misc/Android/GitlabCI_images_prepare.sh | 79 +++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 misc/Android/GitlabCI_images_prepare.sh diff --git a/misc/Android/GitlabCI_images_prepare.sh b/misc/Android/GitlabCI_images_prepare.sh new file mode 100755 index 000000000..9457b2f3a --- /dev/null +++ b/misc/Android/GitlabCI_images_prepare.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# Script to prepare libretroshare Android testing and publishing Docker images +# +# Copyright (C) 2016-2022 Gioacchino Mazzurco +# Copyright (C) 2020-2022 Asociación Civil Altermundi +# +# This program is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the +# Free Software Foundation, version 3. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License along +# with this program. If not, see +# +# SPDX-FileCopyrightText: Retroshare Team +# SPDX-License-Identifier: AGPL-3.0-only + +set -e + +## Define default value for variable, take two arguments, $1 variable name, +## $2 default variable value, if the variable is not already define define it +## with default value. +function define_default_value() +{ + VAR_NAME="${1}" + DEFAULT_VALUE="${2}" + + [ -z "${!VAR_NAME}" ] && export ${VAR_NAME}="${DEFAULT_VALUE}" || true +} + +define_default_value LIBRETROSHARE_SOURCE_VERSION "$(git describe --always)" +define_default_value ANDROID_MIN_API_LEVELS "16 21 24" +define_default_value JNI_NATIVE_LIBS_ARCHS "arm64-v8a armeabi-v7a" +define_default_value GRADLE_FULL_TASK "build" # set to "none" to disable +define_default_value GRADLE_SPLIT_TASKS "bundleDebugAar bundleReleaseAar" + + +function buildDetachPushAndClean() +{ + IMAGE_NAME="$1" + + docker build --squash --tag "${IMAGE_NAME}" \ + --build-arg ANDROID_MIN_API_LEVEL=${ANDROID_MIN_API_LEVEL} \ + --build-arg LIBRETROSHARE_SOURCE_VERSION="$LIBRETROSHARE_SOURCE_VERSION" \ + --build-arg GRADLE_BUILD_TASK="$GRADLE_BUILD_TASK" \ + --build-arg JNI_NATIVE_LIBS_ARCHS="$JNI_NATIVE_LIBS_ARCHS" \ + --file misc/Android/Dockerfile . + + # Push and clean in parallel with other builds + ((docker push "$IMAGE_NAME" && docker system prune --force)&) +} + +for mApiLevel in $(shuf --echo $ANDROID_MIN_API_LEVELS) ; do + ANDROID_MIN_API_LEVEL=$mApiLevel + [ "$mApiLevel" -gt "16" ] || JNI_NATIVE_LIBS_ARCHS="armeabi-v7a" + + [ "$GRADLE_FULL_TASK" == "none" ] || + { + GRADLE_BUILD_TASK="$GRADLE_FULL_TASK" + CI_IMAGE_NAME="registry.gitlab.com/retroshare/retroshare:android_aar_base_${ANDROID_MIN_API_LEVEL}" + + buildDetachPushAndClean "$CI_IMAGE_NAME" + } + + for mArch in $(shuf --echo $JNI_NATIVE_LIBS_ARCHS) ; do + for mTask in $(shuf --echo $GRADLE_SPLIT_TASKS); do + GRADLE_BUILD_TASK=$mTask + JNI_NATIVE_LIBS_ARCHS=$mArch + CI_IMAGE_NAME="registry.gitlab.com/retroshare/retroshare:android_aar_base_${ANDROID_MIN_API_LEVEL}_${JNI_NATIVE_LIBS_ARCHS}_${GRADLE_BUILD_TASK}" + + buildDetachPushAndClean "$CI_IMAGE_NAME" + done + done +done