mirror of
https://git.jami.net/savoirfairelinux/jami-client-android.git
synced 2026-03-13 10:42:02 +08:00
127 lines
3.9 KiB
Docker
127 lines
3.9 KiB
Docker
FROM gradle:jdk17-noble AS build
|
|
|
|
ENV LANG=en_US.utf8
|
|
ENV LC_ALL=en_US.utf8
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Script dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
apt-transport-https \
|
|
ca-certificates \
|
|
gnupg \
|
|
software-properties-common \
|
|
wget
|
|
|
|
# Jami build dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
asciidoc \
|
|
autoconf \
|
|
autogen \
|
|
automake \
|
|
autopoint \
|
|
bc \
|
|
bison \
|
|
build-essential \
|
|
bzip2 \
|
|
cmake \
|
|
curl \
|
|
doxygen \
|
|
gettext \
|
|
git \
|
|
lib32stdc++6 \
|
|
lib32z1 \
|
|
libpcre2-dev \
|
|
libpcre3 \
|
|
libpcre3-dev \
|
|
libtool \
|
|
locales \
|
|
m4 \
|
|
nasm \
|
|
ninja-build \
|
|
pkg-config \
|
|
python-is-python3 \
|
|
ruby \
|
|
ruby-dev \
|
|
ssh \
|
|
unzip \
|
|
yasm \
|
|
zip \
|
|
&& locale-gen $LANG $LC_ALL && update-locale $LANG $LC_ALL
|
|
|
|
# Swig
|
|
RUN wget -O /tmp/swig.tar.gz https://github.com/swig/swig/archive/v4.2.1.tar.gz && \
|
|
tar xzf /tmp/swig.tar.gz -C /opt && \
|
|
cd /opt/swig-4.2.1/ && ./autogen.sh && ./configure && make && make install && \
|
|
cd .. && rm -rf /opt/swig-4.2.1 /tmp/swig.tar.gz
|
|
|
|
# Install Fastlane
|
|
RUN gem install fastlane -NV
|
|
|
|
ARG API_LEVEL="36"
|
|
ARG BUILD_TOOLS="36.1.0"
|
|
|
|
# Install Commandlinetools.
|
|
ENV ANDROID_SDK_ROOT=/opt/android
|
|
ARG ANDROID_CMD="commandlinetools-linux-11076708_latest.zip"
|
|
RUN wget https://dl.google.com/android/repository/${ANDROID_CMD} -P /tmp && \
|
|
unzip -d $ANDROID_SDK_ROOT /tmp/$ANDROID_CMD && \
|
|
mkdir -p $ANDROID_SDK_ROOT/cmdline-tools/tools && cd $ANDROID_SDK_ROOT/cmdline-tools && mv NOTICE.txt source.properties bin lib tools/ && \
|
|
cd $ANDROID_SDK_ROOT/cmdline-tools/tools && ls
|
|
ENV PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/tools:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/tools/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/build-tools/${BUILD_TOOLS}"
|
|
|
|
# Install android SDK libraries, NDK.
|
|
RUN sdkmanager --update
|
|
RUN yes Y | sdkmanager --licenses
|
|
RUN sdkmanager --channel=1 --no_https "platforms;android-${API_LEVEL}" \
|
|
'extras;android;m2repository' \
|
|
'extras;google;m2repository' \
|
|
'ndk;29.0.14206865' \
|
|
'cmake;4.1.2' \
|
|
"build-tools;${BUILD_TOOLS}"
|
|
ENV ANDROID_SDK=${ANDROID_SDK_ROOT}
|
|
ENV ANDROID_NDK=${ANDROID_SDK_ROOT}/ndk/29.0.14206865
|
|
|
|
|
|
FROM build AS test
|
|
|
|
# Jami build dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libx11-6 libx11-xcb1
|
|
|
|
# Install Spoon (test manager).
|
|
ENV SPOON_RUNNER_PATH=/spoon-runner.jar
|
|
RUN wget -O /spoon-runner.jar \
|
|
"https://repo1.maven.org/maven2/com/squareup/spoon/spoon-runner/1.7.1/spoon-runner-1.7.1-jar-with-dependencies.jar"
|
|
|
|
# Install android SDK libraries for emulation.
|
|
ARG API_LEVEL="36"
|
|
ARG TARGET="google_apis_playstore"
|
|
ARG ARCH="x86_64"
|
|
ARG EMULATOR_PACKAGE="system-images;android-${API_LEVEL};${TARGET};${ARCH}"
|
|
ARG BUILD_TOOLS="36.1.0"
|
|
RUN sdkmanager --update
|
|
RUN yes Y | sdkmanager --licenses
|
|
RUN sdkmanager --channel=1 --no_https "${EMULATOR_PACKAGE}" "emulator" "platform-tools"
|
|
|
|
# Create emulator.
|
|
ARG EMULATOR_NAME="pixel"
|
|
ARG EMULATOR_DEVICE="pixel_6_pro"
|
|
ENV EMULATOR_NAME=$EMULATOR_NAME
|
|
ENV DEVICE_NAME=$EMULATOR_DEVICE
|
|
RUN echo "no" | avdmanager --verbose create avd --force --name "${EMULATOR_NAME}" --device "${EMULATOR_DEVICE}" --package "${EMULATOR_PACKAGE}"
|
|
|
|
# Create non-root user with identical host uid/gid.
|
|
# It will helps with permissions on shared volumes.
|
|
ARG HOST_UID
|
|
ARG HOST_GID
|
|
RUN groupadd -g $HOST_GID jenkins && \
|
|
useradd --no-log-init --system --uid $HOST_UID --gid jenkins jenkins --create-home
|
|
|
|
# Define environment variables.
|
|
ENV JAVA_HOME=/opt/java/openjdk/
|
|
ENV ANDROID_ABI=x86_64
|
|
ENV ANDROID_HOME=/opt/android
|
|
ENV PATH="$PATH:/opt/java/openjdk/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/tools/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/build-tools/${BUILD_TOOLS}"
|
|
|
|
CMD [ "/bin/bash" ]
|