bilibili-danmakuflamemaster
SUCCESS
34m 51s
History Source
SummaryIterations2Transcript33Dockerfile
Dockerfile50 lines · 2028 chars
# Multi-stage Dockerfile to build DanmakuFlameMaster from source and collect artifacts
# Stage 1: builder with Android SDK and Gradle
FROM gradle:jdk11 AS builder

ENV DEBIAN_FRONTEND=noninteractive

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

# Android SDK locations and PATH
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV ANDROID_HOME=$ANDROID_SDK_ROOT
ENV PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/tools/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin

# Install Android command-line tools and required platforms/build-tools/NDK
RUN mkdir -p $ANDROID_SDK_ROOT/cmdline-tools
RUN curl -sS -L https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o /tmp/commandlinetools.zip && \
    unzip -q /tmp/commandlinetools.zip -d /tmp/commandline-tools && \
    mkdir -p $ANDROID_SDK_ROOT/cmdline-tools/latest && \
    mv /tmp/commandline-tools/cmdline-tools/* $ANDROID_SDK_ROOT/cmdline-tools/latest/ && \
    rm -f /tmp/commandlinetools.zip

# Accept licenses and install required SDK components
RUN yes | sdkmanager --licenses || true
RUN yes | sdkmanager "platform-tools" "platforms;android-25" "build-tools;26.0.2" "ndk;21.0.6113669"

WORKDIR /workspace

# Copy source code into the image
COPY . /workspace

# Build the DanmakuFlameMaster module; skip unit tests for speed
RUN chmod +x gradlew && ./gradlew :DanmakuFlameMaster:assembleRelease -x test -x androidTest

# Stage 2: Runtime image that holds build artifacts
FROM alpine:3.20 AS runtime

# Minimal runtime with certificates
RUN apk add --no-cache ca-certificates

# Copy built artifacts from builder stage
COPY --from=builder /workspace/DanmakuFlameMaster/build/outputs/aar /artifacts/aar

WORKDIR /artifacts

# Default command lists available artifacts
CMD ["sh", "-lc", "echo 'DanmakuFlameMaster release AARs available at /artifacts/aar'; ls -la /artifacts/aar"]