78 lines
3 KiB
Docker
78 lines
3 KiB
Docker
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
# Inspired by:
|
|
# https://hub.docker.com/r/runmymind/docker-android-sdk/~/dockerfile/
|
|
|
|
FROM ubuntu:22.04
|
|
|
|
MAINTAINER Sebastian Kaspari "skaspari@mozilla.com"
|
|
|
|
# -- System -----------------------------------------------------------------------------
|
|
|
|
ENV GRADLE_OPTS='-Xmx4096m -Dorg.gradle.daemon=false' \
|
|
LANG='en_US.UTF-8' \
|
|
TERM='dumb' \
|
|
JAVA17PATH="/usr/lib/jvm/java-17-openjdk-amd64/bin/:$PATH"
|
|
|
|
RUN apt-get update -qq \
|
|
# We need to install tzdata before all of the other packages. Otherwise it will show an interactive dialog
|
|
# which we cannot navigate while building the Docker image.
|
|
&& apt-get install -y tzdata \
|
|
&& apt-get install -y openjdk-17-jdk \
|
|
git \
|
|
curl \
|
|
python3 \
|
|
python-pip3 \
|
|
locales \
|
|
unzip \
|
|
mercurial \
|
|
&& apt-get clean
|
|
|
|
# Today's Fastlane depends on a newer Ruby version than Ubuntu 17.10 has, so since
|
|
# fastlane is only used for screenshots (afaik) just skip it.
|
|
#RUN gem install fastlane
|
|
|
|
RUN locale-gen en_US.UTF-8
|
|
|
|
# -- Android SDK ------------------------------------------------------------------------
|
|
|
|
RUN cd /opt && curl --location --retry 5 --output android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip \
|
|
&& unzip -d /opt/android-sdk-linux android-sdk.zip \
|
|
&& rm -f android-sdk.zip
|
|
|
|
ENV ANDROID_SDK_HOME /opt/android-sdk-linux
|
|
ENV ANDROID_HOME /opt/android-sdk-linux
|
|
|
|
RUN yes | PATH=$JAVA17PATH "${ANDROID_SDK_HOME}/cmdline-tools/bin/sdkmanager" --licenses
|
|
|
|
# -- Project setup ----------------------------------------------------------------------
|
|
|
|
WORKDIR /opt
|
|
|
|
# Checkout source code
|
|
RUN git clone https://github.com/mozilla-mobile/focus-android.git
|
|
|
|
# Build project and run gradle tasks once to pull all dependencies
|
|
WORKDIR /opt/focus-android
|
|
RUN ./gradlew assembleFocusDebug \
|
|
&& ./gradlew testFocusDebugUnitTest \
|
|
&& ./gradlew detekt \
|
|
&& ./gradlew ktlint \
|
|
&& ./gradlew clean
|
|
|
|
# -- Post setup -------------------------------------------------------------------------
|
|
|
|
# Install taskcluster python library (used by decision tasks)
|
|
# 5.0.0 is still incompatible with taskclusterProxy, meaning no decision task is able
|
|
# to schedule the rest of the Taskcluster tasks. Please upgrade to taskcluster>=5 once
|
|
# https://bugzilla.mozilla.org/show_bug.cgi?id=1460015 is fixed
|
|
RUN pip install 'taskcluster>=4,<5'
|
|
|
|
# Install Google Cloud SDK for using Firebase Test Lab
|
|
RUN cd /opt && curl --location --retry 5 --output gcloud.tar.gz https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-331.0.0-linux-x86_64.tar.gz \
|
|
&& tar -xvf /opt/gcloud.tar.gz \
|
|
&& rm -f gcloud.tar.gz \
|
|
&& /opt/google-cloud-sdk/install.sh --quiet \
|
|
&& /opt/google-cloud-sdk/bin/gcloud --quiet components update
|