1+ FROM ubuntu:24.04
2+
3+ # Использование немецкого зеркала для ускорения загрузки
4+ RUN sed -i 's|archive.ubuntu.com|de.archive.ubuntu.com|g' /etc/apt/sources.list.d/ubuntu.sources || \
5+ sed -i 's|archive.ubuntu.com|de.archive.ubuntu.com|g' /etc/apt/sources.list || \
6+ true
7+
8+ ENV DEBIAN_FRONTEND=noninteractive
9+ ENV ANDROID_HOME=/opt/android-sdk
10+ ENV BUNDLE_PATH=vendor/bundle
11+ ENV PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/30.0.3:$ANDROID_HOME/emulator:$BUNDLE_PATH/bin
12+ ENV LC_ALL=en_US.UTF-8
13+ ENV LANG=en_US.UTF-8
14+
15+ # Оптимизированные JVM настройки для CI
16+ ENV JAVA_OPTS="-Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
17+ ENV GRADLE_OPTS="-Dorg.gradle.daemon=false -Dorg.gradle.parallel=false -Dorg.gradle.jvmargs='-Xmx4g -XX:+UseG1GC' -Dorg.gradle.workers.max=4"
18+
19+ # Установка пакетов
20+ RUN apt-get update --fix-missing && apt-get install -y \
21+ locales \
22+ openjdk-17-jdk \
23+ wget \
24+ unzip \
25+ curl \
26+ git \
27+ build-essential \
28+ jq \
29+ libglu1-mesa \
30+ mesa-utils \
31+ libpulse0 \
32+ libvirt-daemon-system \
33+ libvirt-clients \
34+ bridge-utils \
35+ qemu-kvm \
36+ htop \
37+ procps \
38+ xvfb \
39+ x11-utils \
40+ libc6-dev \
41+ libstdc++6 \
42+ libgcc-s1 \
43+ zlib1g-dev \
44+ libvulkan1 \
45+ mesa-vulkan-drivers \
46+ libgl1-mesa-dri \
47+ libxext6 \
48+ libxtst6 \
49+ ruby \
50+ ruby-dev \
51+ && apt-get clean \
52+ && rm -rf /var/lib/apt/lists/*
53+
54+ # Настройка локали
55+ RUN locale-gen en_US.UTF-8 && \
56+ update-locale LANG=en_US.UTF-8
57+
58+ # Установка GitHub CLI
59+ RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg && \
60+ chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg && \
61+ echo "deb [signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list && \
62+ apt-get update && apt-get install -y gh && \
63+ apt-get clean && rm -rf /var/lib/apt/lists/*
64+
65+ # Установка Android SDK
66+ RUN mkdir -p $ANDROID_HOME/cmdline-tools && \
67+ wget --timeout=30 --tries=3 https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O /tmp/cmdline-tools.zip && \
68+ unzip /tmp/cmdline-tools.zip -d /tmp && \
69+ mv /tmp/cmdline-tools $ANDROID_HOME/cmdline-tools/latest && \
70+ rm -f /tmp/cmdline-tools.zip
71+
72+ # Установка Android SDK компонентов для API 30 (стабильная версия)
73+ RUN yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses && \
74+ $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager \
75+ "platform-tools" \
76+ "platforms;android-30" \
77+ "build-tools;30.0.3" \
78+ "emulator" \
79+ "system-images;android-30;google_apis;x86_64"
80+
81+ RUN echo "* soft nofile 262144" >> /etc/security/limits.conf && \
82+ echo "* hard nofile 262144" >> /etc/security/limits.conf
83+
84+ RUN apt-get update && apt-get install -y libjemalloc2 && \
85+ echo "/usr/lib/x86_64-linux-gnu/libjemalloc.so.2" >> /etc/ld.so.preload && \
86+ apt-get clean && rm -rf /var/lib/apt/lists/*
87+
88+ # Создание необходимых директорий
89+ RUN mkdir -p /root/.gradle \
90+ && mkdir -p /root/.android \
91+ && mkdir -p /root/.emulator_console_auth_token
92+
93+ # Установка прав на выполнение для эмулятора
94+ RUN chmod +x $ANDROID_HOME/emulator/emulator* || true
95+
96+ # Создание базового профиля для эмулятора
97+ RUN echo "export ANDROID_HOME=$ANDROID_HOME" >> /root/.bashrc && \
98+ echo "export PATH=\$PATH:\$ANDROID_HOME/emulator:\$ANDROID_HOME/platform-tools" >> /root/.bashrc
99+
100+ RUN gem install bundler:2.5.23
101+ RUN gem install fastlane -v 2.225.0 -N -V
102+ RUN gem install fastlane-plugin-firebase_app_distribution -v 0.9.1 -N -V
103+
104+ CMD ["bash"]
0 commit comments