Files
jami-client-android/docker/Dockerfile
Adrien Béraud aa20a38513 update dependencies
Change-Id: Ifd61826037815484d9f6bbd107089a8244d9b86f
2026-02-20 15:14:37 -05:00

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