FROM eclipse-temurin:21-jdk-jammy
LABEL maintainer="BuildAgent"
# Install essential tools
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates zip unzip git && \
rm -rf /var/lib/apt/lists/*
# Android SDK setup
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV ANDROID_HOME=$ANDROID_SDK_ROOT
ENV PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$ANDROID_SDK_ROOT/platform-tools
RUN mkdir -p "$ANDROID_SDK_ROOT" && \
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" && \
cd /tmp && \
echo "Downloading Android commandline tools..." && \
curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o commandlinetools.zip && \
unzip -q commandlinetools.zip -d /tmp/cmdline-tools && \
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" && \
mv /tmp/cmdline-tools/cmdline-tools "$ANDROID_SDK_ROOT/cmdline-tools/tools" && \
rm commandlinetools.zip && \
yes | "$ANDROID_SDK_ROOT/cmdline-tools/tools/bin/sdkmanager" --sdk_root="$ANDROID_SDK_ROOT" \
"platform-tools" \
"platforms;android-33" \
"build-tools;33.0.0" \
"extras;android;m2repository" \
"extras;google;m2repository" && \
rm -rf /tmp/cmdline-tools
# Prepare project
WORKDIR /workspace
COPY . /workspace
RUN chmod +x gradlew
# Ensure Gradle wrapper can download dependencies
RUN ./gradlew --version
# Build a debug APK by default (signing not required for debug builds)
RUN ./gradlew assembleDebug
CMD ["bash"]
git node_modules .gradle build *.iml *.log **/*.tmp .DS_Store .idea/ *.lock
Summary of Docker build error - Failing command/step - [8/8] RUN ./gradlew assembleDebug - Exact error message and exit code - BUILD FAILED in 50s - 51.37 > Failed to notify project evaluation listener. - 51.37 > The file '/workspace/local.properties' could not be found - Docker exit: process "/bin/sh -c ./gradlew assembleDebug" did not complete successfully: exit code: 1 - Missing packages or files mentioned - Missing file: /workspace/local.properties - Version information / potential mismatches - Gradle: 8.5 (Gradle 8.5) - JVM: 21.0.10 (Eclipse Adoptium 21.0.10+7-LTS) – Java 21 support is noted in Gradle 8.5 - Kotlin: 1.9.20 - Context: Gradle configuration failed while building project ':mastodon' during assembleDebug - Additional context - The failure occurs during Gradle project configuration, specifically complaining about a missing local.properties file, which Gradle uses to locate the Android SDK (sdk.dir). Suggested next steps - Ensure a valid local.properties exists in /workspace (or configure the build to set ANDROID_SDK_ROOT/ANDROID_HOME appropriately). Typical entry: sdk.dir=/path/to/android-sdk - If using Android SDK installed earlier in the Dockerfile, verify the path matches local.properties or set environment variables so Gradle does not require local.properties.
FROM eclipse-temurin:21-jdk-jammy
LABEL maintainer="BuildAgent"
# Install essential tools
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates zip unzip git && \
rm -rf /var/lib/apt/lists/*
# Android SDK setup
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV ANDROID_HOME=$ANDROID_SDK_ROOT
ENV PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$ANDROID_SDK_ROOT/platform-tools
RUN mkdir -p "$ANDROID_SDK_ROOT" && \
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" && \
cd /tmp && \
echo "Downloading Android commandline tools..." && \
curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o commandlinetools.zip && \
unzip -q commandlinetools.zip -d /tmp/cmdline-tools && \
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" && \
mv /tmp/cmdline-tools/cmdline-tools "$ANDROID_SDK_ROOT/cmdline-tools/tools" && \
rm commandlinetools.zip && \
yes | "$ANDROID_SDK_ROOT/cmdline-tools/tools/bin/sdkmanager" --sdk_root="$ANDROID_SDK_ROOT" \
"platform-tools" \
"platforms;android-33" \
"build-tools;33.0.0" \
"extras;android;m2repository" \
"extras;google;m2repository" && \
rm -rf /tmp/cmdline-tools
# Prepare project
WORKDIR /workspace
COPY . /workspace
RUN chmod +x gradlew
# Ensure Gradle wrapper can download dependencies
RUN ./gradlew --version
# Create local.properties to point Gradle to Android SDK
RUN bash -lc "echo sdk.dir=$ANDROID_SDK_ROOT > local.properties"
# Build a debug APK by default (signing not required for debug builds)
RUN ./gradlew assembleDebug
CMD ["bash"]
Concerns: Building the Android APK in the image will significantly increase build time and image size due to the Android SDK and Gradle dependencies. This is more than a typical Java native_library build and may not be ideal for lightweight CI jobs. Smoke [PASS]: ls -la /workspace Smoke [PASS]: test -x /opt/android-sdk/cmdline-tools/tools/bin/sdkmanager && echo sdkmanager-present Smoke [PASS]: find /workspace -name '*.apk' -print -quit