mastodon-mastodon-android
SUCCESS
3m 55s
History Source
SummaryIterations1Transcript3Dockerfile
Dockerfile53 lines · 1872 chars
FROM gradle:jdk25

# Dockerfile to build Mastodon for Android from source using Gradle and Android SDK

ENV DEBIAN_FRONTEND=noninteractive
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV PATH=$PATH:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/tools/bin:${ANDROID_SDK_ROOT}/platform-tools

# Install system dependencies
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        curl \
        unzip \
        ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# Install Android Command Line Tools and Android SDK components
RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools \
    && curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o /tmp/commandlinetools-linux.zip \
    && unzip -q /tmp/commandlinetools-linux.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools \
    && rm /tmp/commandlinetools-linux.zip \
    && mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/latest

# Accept licenses and install essential components
RUN yes | ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --licenses

RUN ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager \
    "platform-tools" \
    "platforms;android-33" \
    "build-tools;33.0.0"

# Prepare workspace
WORKDIR /workspace

# Copy source
COPY . .

# Provide Gradle with Android SDK dir and enable signing via environment (CI will supply keystore in CI runs)
RUN echo "sdk.dir=${ANDROID_SDK_ROOT}" > local.properties

# Ensure Gradle wrapper is executable and available
RUN chmod +x ./gradlew

# Print Gradle version to verify environment
RUN ./gradlew --version

# Build release artifacts (best effort; signing may require CI-provided keystore)
RUN ./gradlew assembleRelease || true
RUN ./gradlew assembleGithubRelease || true

# Default to an interactive shell to inspect the image if needed
CMD ["bash"]