0
0
mirror of https://github.com/signalapp/libsignal.git synced 2024-09-20 03:52:17 +02:00
libsignal/java/Dockerfile
Jordan Rose 5380131e7c Java: switch to Debian for Docker builds instead of Ubuntu
Debian has a more stable retention period for pinned dependencies (the
version of OpenJDK 8 we were using for Ubuntu is gone already!), and
it matches what the Signal-Android repository is doing.
2021-04-21 12:15:33 -07:00

89 lines
3.0 KiB
Docker

#
# Copyright 2020-2021 Signal Messenger, LLC.
# SPDX-License-Identifier: AGPL-3.0-only
#
FROM debian:stretch
COPY java/docker/ docker/
COPY java/docker/apt.conf java/docker/sources.list /etc/apt/
# Install tools
RUN apt-get update \
&& apt-get install -y \
apt-transport-https \
build-essential \
git \
curl \
wget \
gpg-agent \
openssh-client \
unzip
# Install pinned dependencies
RUN apt-get install -y $(cat docker/dependencies.txt)
RUN docker/print-versions.sh docker/dependencies.txt
ARG UID
ARG GID
# Create a user to map the host user to.
RUN groupadd -o -g "${GID}" libsignal \
&& useradd -m -o -u "${UID}" -g "${GID}" -s /bin/bash libsignal
USER libsignal
ENV HOME /home/libsignal
ENV USER libsignal
ENV SHELL /bin/bash
WORKDIR /home/libsignal
# Android SDK setup...
ARG ANDROID_SDK_FILENAME=commandlinetools-linux-6200805_latest.zip
ARG ANDROID_SDK_SHA=f10f9d5bca53cc27e2d210be2cbc7c0f1ee906ad9b868748d74d62e10f2c8275
ARG ANDROID_API_LEVELS=android-28
ARG ANDROID_BUILD_TOOLS_VERSION=28.0.3
ARG NDK_VERSION=21.0.6113669
ENV ANDROID_HOME /home/libsignal/android-sdk
ENV NDK_HOME ${ANDROID_HOME}/ndk/${NDK_VERSION}
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
RUN wget -q https://dl.google.com/android/repository/${ANDROID_SDK_FILENAME} \
&& echo "${ANDROID_SDK_SHA} ${ANDROID_SDK_FILENAME}" | sha256sum -c - \
&& unzip -q ${ANDROID_SDK_FILENAME} -d android-sdk \
&& rm -rf ${ANDROID_SDK_FILENAME}
RUN echo y | ./android-sdk/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platforms;${ANDROID_API_LEVELS}" \
&& ./android-sdk/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
&& ./android-sdk/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platform-tools" \
&& ./android-sdk/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "ndk;${NDK_VERSION}"
# Rust setup...
# This should always match the version set in rust-toolchain
ARG RUST_TOOLCHAIN=nightly-2020-11-09
ARG RUSTUP_SHA=ad1f8b5199b3b9e231472ed7aa08d2e5d1d539198a15c5b1e53c746aad81d27b
ARG CARGO_NDK_VERSION=1.0.0
ENV PATH="/home/libsignal/.cargo/bin:${PATH}"
RUN curl -f https://static.rust-lang.org/rustup/archive/1.21.1/x86_64-unknown-linux-gnu/rustup-init -o /tmp/rustup-init \
&& echo "${RUSTUP_SHA} /tmp/rustup-init" | sha256sum -c - \
&& chmod a+x /tmp/rustup-init \
&& /tmp/rustup-init -y --profile minimal --default-toolchain "${RUST_TOOLCHAIN}" \
&& rm -rf /tmp/rustup-init
RUN rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android \
&& cargo install --version ${CARGO_NDK_VERSION} cargo-ndk
# Pre-download Gradle.
ENV GRADLE_OPTS=-Dorg.gradle.daemon=false
COPY java/gradle gradle
COPY java/gradlew gradlew
RUN ./gradlew --version
# Convert ssh to https for git dependency access without a key.
RUN git config --global url."https://github".insteadOf ssh://git@github
CMD [ "/bin/bash" ]