-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
133 lines (105 loc) · 4.44 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
FROM phusion/baseimage:0.9.22
# Use baseimage-docker's init system.
CMD ["/sbin/my_init"]
## Set up Android related environment vars
ENV ANDROID_COMPILE_SDK="29"
ENV ANDROID_BUILD_TOOLS="29.0.3"
ENV ANDROID_SDK_TOOLS="6514223"
ARG GRADLE_VERSION=6.3
ARG GRADLE_DIST=all
ARG KOTLIN_VERSION=1.4.10
ENV ANDROID_SDK_ROOT="/opt/android-sdk" \
RUBY_MAJOR=2.6 \
RUBY_VERSION=2.6.6 \
RUBY_DOWNLOAD_SHA256=364b143def360bac1b74eb56ed60b1a0dca6439b00157ae11ff77d5cd2e92291 \
RUBYGEMS_VERSION=3.0.3 \
FASTLANE_VERSION=2.171.0 \
YARN_VERSION=1.3.2 \
NODE_VERSION=9.3.0
WORKDIR /opt
# Install Dependencies
COPY dependencies.txt /var/temp/dependencies.txt
RUN dpkg --add-architecture i386 && apt-get update
RUN apt-get install -y --allow-change-held-packages $(cat /var/temp/dependencies.txt)
# download and install Gradle
# https://services.gradle.org/distributions/
RUN cd /opt && \
wget -q https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-${GRADLE_DIST}.zip && \
unzip gradle*.zip && \
ls -d */ | sed 's/\/*$//g' | xargs -I{} mv {} gradle && \
rm gradle*.zip
# download and install Kotlin compiler
# https://github.com/JetBrains/kotlin/releases/latest
RUN cd /opt && \
wget -q https://github.com/JetBrains/kotlin/releases/download/v${KOTLIN_VERSION}/kotlin-compiler-${KOTLIN_VERSION}.zip && \
unzip *kotlin*.zip && \
rm *kotlin*.zip
# Install openjdk-8-jdk
RUN apt-get update \
&& apt-get install -y openjdk-8-jdk \
&& apt-get autoremove -y \
&& apt-get clean
# Install ruby
RUN mkdir -p /usr/local/etc \
&& { \
echo 'install: --no-document'; \
echo 'update: --no-document'; \
} >> /usr/local/etc/gemrc
# some of ruby's build scripts are written in ruby so we purge this later to make sure our final image uses what we just built
RUN set -ex \
&& buildDeps='bison libgdbm-dev ruby' \
&& apt-get update \
&& apt-get install -y --no-install-recommends $buildDeps \
&& rm -rf /var/lib/apt/lists/* \
&& wget --output-document=ruby.tar.gz --quiet http://cache.ruby-lang.org/pub/ruby/$RUBY_MAJOR/ruby-${RUBY_VERSION}.tar.gz \
&& echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz" | sha256sum -c - \
&& mkdir -p /usr/src/ruby \
&& tar -xzf ruby.tar.gz -C /usr/src/ruby --strip-components=1 \
&& rm ruby.tar.gz \
&& cd /usr/src/ruby \
&& { echo '#define ENABLE_PATH_CHECK 0'; echo; cat file.c; } > file.c.new && mv file.c.new file.c \
&& autoconf \
&& ./configure --disable-install-doc \
&& make -j"$(nproc)" \
&& make install \
&& apt-get purge -y --auto-remove $buildDeps \
&& gem update --system $RUBYGEMS_VERSION \
&& rm -r /usr/src/ruby \
&& apt-get autoremove -y \
&& apt-get clean
# install things globally, for great justice and don't create ".bundle" in all our apps
ENV GEM_HOME /usr/local/bundle
ENV BUNDLE_PATH="$GEM_HOME" \
BUNDLE_BIN="$GEM_HOME/bin" \
BUNDLE_SILENCE_ROOT_WARNING=1 \
BUNDLE_APP_CONFIG="$GEM_HOME"
ENV PATH $BUNDLE_BIN:$PATH
RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
&& chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
# Install fastlane
RUN gem install fastlane -NV -v "$FASTLANE_VERSION"
# Install command line tools
RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && \
wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip && \
unzip *tools*linux*.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools && \
rm *tools*linux*.zip
# set the environment variables
ENV GRADLE_HOME /opt/gradle
ENV KOTLIN_HOME /opt/kotlinc
ENV PATH ${PATH}:${GRADLE_HOME}/bin:${KOTLIN_HOME}/bin:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/cmdline-tools/tools/bin:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/emulator
# WORKAROUND: for issue https://issuetracker.google.com/issues/37137213
ENV LD_LIBRARY_PATH ${ANDROID_SDK_ROOT}/emulator/lib64:${ANDROID_SDK_ROOT}/emulator/lib64/qt/lib
# accept the license agreements of the SDK components
RUN echo yes | sdkmanager --licenses
# Install Android Build Tool and Libraries
RUN sdkmanager --update
RUN yes | sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" \
"platforms;android-${ANDROID_COMPILE_SDK}" \
"tools" \
"extras;android;m2repository" \
"extras;google;m2repository" \
"extras;google;google_play_services"
# Install Build Essentials
RUN apt-get update && apt-get install build-essential -y && apt-get install file -y && apt-get install apt-utils -y
# Cleaning
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*