mirror of
git://f0xx.org/android_cast
synced 2026-07-29 08:19:00 +03:00
68 lines
2.6 KiB
Docker
68 lines
2.6 KiB
Docker
# Minimal Android Cast CI image (glibc-based; NDK prebuilts require linux-x86_64 glibc).
|
|
#
|
|
# Build:
|
|
# docker build -t androidcast-ci:latest -f Dockerfile .
|
|
#
|
|
# Run CI build (mount repo):
|
|
# docker run --rm -v "$(pwd)":/workspace -w /workspace androidcast-ci:latest
|
|
#
|
|
# Interactive:
|
|
# docker run --rm -it -v "$(pwd)":/workspace -w /workspace androidcast-ci:latest bash
|
|
#
|
|
# Note: Alpine/musl breaks NDK clang prebuilts; use Debian slim instead of rust:* for size.
|
|
|
|
FROM debian:bookworm-slim
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
ARG ANDROID_SDK_ROOT=/opt/android-sdk
|
|
ARG ANDROID_NDK_VERSION=27.0.12077973
|
|
ARG ANDROID_CMAKE_VERSION=3.22.1
|
|
ARG CMDLINE_TOOLS_REV=11076708
|
|
|
|
ENV ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT}" \
|
|
ANDROID_HOME="${ANDROID_SDK_ROOT}" \
|
|
ANDROID_NDK_HOME="${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}" \
|
|
ANDROID_NDK_ROOT="${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}" \
|
|
PATH="${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${PATH}" \
|
|
ANDROIDCAST_CCACHE=1 \
|
|
ANDROIDCAST_USE_DISTCC=0 \
|
|
GRADLE_USER_HOME=/root/.gradle \
|
|
JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
bash ca-certificates curl git openjdk-21-jdk-headless unzip wget \
|
|
ninja-build cmake ccache \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Optional distributed compile (off unless ANDROIDCAST_USE_DISTCC=1 + DISTCC_HOSTS at run time).
|
|
RUN apt-get update && apt-get install -y --no-install-recommends distcc \
|
|
&& rm -rf /var/lib/apt/lists/* || true
|
|
|
|
RUN mkdir -p "${ANDROID_SDK_ROOT}/cmdline-tools" \
|
|
&& curl -fsSL "https://dl.google.com/android/repository/commandlinetools-linux-${CMDLINE_TOOLS_REV}_latest.zip" \
|
|
-o /tmp/cmdline-tools.zip \
|
|
&& unzip -q /tmp/cmdline-tools.zip -d "${ANDROID_SDK_ROOT}/cmdline-tools" \
|
|
&& mv "${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools" "${ANDROID_SDK_ROOT}/cmdline-tools/latest" \
|
|
&& rm -f /tmp/cmdline-tools.zip
|
|
|
|
RUN yes | sdkmanager --licenses >/dev/null \
|
|
&& sdkmanager \
|
|
"platform-tools" \
|
|
"platforms;android-34" \
|
|
"build-tools;34.0.0" \
|
|
"ndk;${ANDROID_NDK_VERSION}" \
|
|
"cmake;${ANDROID_CMAKE_VERSION}"
|
|
|
|
WORKDIR /workspace
|
|
|
|
# Pre-create ccache dir (volume can override at runtime).
|
|
RUN mkdir -p /workspace/build/.ccache || true
|
|
|
|
COPY scripts/ci-build.sh scripts/android-ndk.sh scripts/native-build-cache.sh scripts/build-native-codecs.sh \
|
|
/workspace/scripts/
|
|
|
|
RUN chmod +x /workspace/scripts/ci-build.sh /workspace/scripts/build-native-codecs.sh
|
|
|
|
# Full tree is bind-mounted in CI; default command runs the pipeline.
|
|
CMD ["./scripts/ci-build.sh"]
|