bvandeusen
  • Joined on 2026-05-30

ci-rust-android (1.97)

Published 2026-09-07 00:06:13 -04:00 by bvandeusen

Installation

docker pull git.fabledsword.com/bvandeusen/ci-rust-android:1.97
sha256:f5f3ec20546c7a1447abbe5dd2ac753883d0a62b49b319443bac1c5256196220

About this package

CI image: Rust + the four Android ABIs + cargo-ndk + Android SDK/NDK + JDK + ktlint + detekt + Node. For Kotlin/Compose apps with a Rust core.

Image Layers

ARG RELEASE
ARG LAUNCHPAD_BUILD_ARCH
LABEL org.opencontainers.image.version=24.04
ADD file:cb9335ce6f27399c2b17787739d6675502767c53e0335ded2a5f0d003d996650 in /
CMD ["/bin/bash"]
ENV JAVA_HOME=/opt/java/openjdk
ENV PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
RUN /bin/sh -c set -eux; apt-get update; DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends fontconfig ca-certificates p11-kit binutils tzdata locales ; echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; locale-gen en_US.UTF-8; rm -rf /var/lib/apt/lists/* # buildkit
ENV JAVA_VERSION=jdk-25.0.4+7
RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in amd64) ESUM='e58fcdcd637b25c03ca84cbbcefc70d11efb8f4b4cbd05decc9f661769d77f94'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4%2B7/OpenJDK25U-jdk_x64_linux_hotspot_25.0.4_7.tar.gz'; ;; arm64) ESUM='621f7196f0b682fb557da58bec89bd7dfe5419811fe1c0ba75c9cc8432f084c7'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4%2B7/OpenJDK25U-jdk_aarch64_linux_hotspot_25.0.4_7.tar.gz'; ;; ppc64el) ESUM='6b49f8289c377d4fb79ef54b612d77f969648f6ff862152f73c0be897e7c1ef8'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4%2B7/OpenJDK25U-jdk_ppc64le_linux_hotspot_25.0.4_7.tar.gz'; ;; riscv64) ESUM='c6a70ed1ebe5ff66614f71fa9070e26d5b21587f576a8cb4f818269f4f475191'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4%2B7/OpenJDK25U-jdk_riscv64_linux_hotspot_25.0.4_7.tar.gz'; ;; s390x) ESUM='24f05bf8b13cbb2fd6bdcc02da837725309d7279b5edebafb6b0994dcda262b3'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4%2B7/OpenJDK25U-jdk_s390x_linux_hotspot_25.0.4_7.tar.gz'; ;; *) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends wget gnupg; wget --progress=dot:giga -O /tmp/openjdk.tar.gz ${BINARY_URL}; wget --progress=dot:giga -O /tmp/openjdk.tar.gz.sig ${BINARY_URL}.sig; export GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 3B04D753C9050D9A5D343F39843C48A565F8F04B; gpg --batch --verify /tmp/openjdk.tar.gz.sig /tmp/openjdk.tar.gz; rm -rf "${GNUPGHOME}" /tmp/openjdk.tar.gz.sig; echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; mkdir -p "$JAVA_HOME"; tar --extract --file /tmp/openjdk.tar.gz --directory "$JAVA_HOME" --strip-components 1 --no-same-owner ; rm -f /tmp/openjdk.tar.gz ${JAVA_HOME}/lib/src.zip; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark > /dev/null; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; rm -rf /var/lib/apt/lists/*; find "$JAVA_HOME/lib" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; ldconfig; java -Xshare:dump; # buildkit
RUN /bin/sh -c set -eux; echo "Verifying install ..."; fileEncoding="$(echo 'System.out.println(System.getProperty("file.encoding"))' | jshell -s -)"; [ "$fileEncoding" = 'UTF-8' ]; rm -rf ~/.java; echo "javac --version"; javac --version; echo "java --version"; java --version; echo "Complete." # buildkit
COPY --chmod=755 entrypoint.sh /__cacert_entrypoint.sh # buildkit
ENTRYPOINT ["/__cacert_entrypoint.sh"]
CMD ["jshell"]
LABEL org.opencontainers.image.source=https://git.fabledsword.com/bvandeusen/CI-runner org.opencontainers.image.description=CI image: Rust + the four Android ABIs + cargo-ndk + Android SDK/NDK + JDK + ktlint + detekt + Node. For Kotlin/Compose apps with a Rust core. org.opencontainers.image.licenses=MIT
SHELL [/bin/bash -eo pipefail -c]
ARG NODE_MAJOR
ARG RUST_VERSION
ARG CARGO_NDK_VERSION
ARG ANDROID_CMDLINE_TOOLS_VERSION
ARG ANDROID_API_LEVEL
ARG ANDROID_BUILD_TOOLS
ARG ANDROID_NDK_VERSION
ARG KTLINT_VERSION
ARG DETEKT_VERSION
ARG RUNNER_UID
ARG RUNNER_USER
ENV ANDROID_SDK_ROOT=/opt/android-sdk ANDROID_HOME=/opt/android-sdk RUSTUP_HOME=/opt/rustup CARGO_HOME=/opt/cargo PATH=/opt/cargo/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
COPY scripts/install-common.sh /tmp/install-common.sh # buildkit
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c NODE_MAJOR=${NODE_MAJOR} bash /tmp/install-common.sh && rm /tmp/install-common.sh # buildkit
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c apt-get update && apt-get install -y --no-install-recommends build-essential make perl unzip zip && rm -rf /var/lib/apt/lists/* # buildkit
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c curl -fsSL "https://github.com/pinterest/ktlint/releases/download/${KTLINT_VERSION}/ktlint" -o /usr/local/bin/ktlint && chmod +x /usr/local/bin/ktlint && curl -fsSL "https://github.com/detekt/detekt/releases/download/v${DETEKT_VERSION}/detekt-cli-${DETEKT_VERSION}.zip" -o /tmp/detekt.zip && unzip -q /tmp/detekt.zip -d /opt && mv /opt/detekt-cli-${DETEKT_VERSION} /opt/detekt-cli && ln -s /opt/detekt-cli/bin/detekt-cli /usr/local/bin/detekt && rm /tmp/detekt.zip # buildkit
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c useradd --create-home --shell /bin/bash --uid ${RUNNER_UID} ${RUNNER_USER} && mkdir -p ${ANDROID_SDK_ROOT} ${RUSTUP_HOME} ${CARGO_HOME} && chown -R ${RUNNER_UID}:${RUNNER_UID} ${ANDROID_SDK_ROOT} ${RUSTUP_HOME} ${CARGO_HOME} # buildkit
USER runner
WORKDIR /home/runner
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && curl -fsSL "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS_VERSION}_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 /tmp/cmdline-tools.zip # buildkit
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c (for i in $(seq 1 50); do echo y; done) | sdkmanager --licenses >/dev/null && sdkmanager "platform-tools" "platforms;android-${ANDROID_API_LEVEL}" "build-tools;${ANDROID_BUILD_TOOLS}" "ndk;${ANDROID_NDK_VERSION}" # buildkit
ENV ANDROID_NDK_HOME=/opt/android-sdk/ndk/28.2.13676358 NDK_HOME=/opt/android-sdk/ndk/28.2.13676358
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c NDK_BIN="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin" && for triple in aarch64-linux-android armv7a-linux-androideabi arm-linux-androideabi i686-linux-android x86_64-linux-android; do for tool in ar ranlib nm strip; do ln -sf "${NDK_BIN}/llvm-${tool}" "${NDK_BIN}/${triple}-${tool}"; done; done && test -x "${NDK_BIN}/aarch64-linux-android-ranlib" # buildkit
ENV PATH=/opt/cargo/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/android-sdk/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c curl -fsSL https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal --default-toolchain ${RUST_VERSION} && rustup component add clippy rustfmt && rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android # buildkit
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c cargo install cargo-ndk --version ${CARGO_NDK_VERSION} --locked # buildkit
RUN |11 NODE_MAJOR=24 RUST_VERSION=1.97.1 CARGO_NDK_VERSION=4.1.2 ANDROID_CMDLINE_TOOLS_VERSION=11076708 ANDROID_API_LEVEL=36 ANDROID_BUILD_TOOLS=36.0.0 ANDROID_NDK_VERSION=28.2.13676358 KTLINT_VERSION=1.4.0 DETEKT_VERSION=1.23.7 RUNNER_UID=1001 RUNNER_USER=runner /bin/bash -eo pipefail -c rustc --version && cargo --version && cargo clippy --version && cargo fmt --version && cargo ndk --version && java -version && javac -version && sdkmanager --version && ktlint --version && detekt --version && node --version && rustup target list --installed | grep -q aarch64-linux-android && test -d "${ANDROID_NDK_HOME}" && echo "NDK present at ${ANDROID_NDK_HOME}" && command -v aarch64-linux-android-ranlib && command -v aarch64-linux-android-ar # buildkit

Labels

Key Value
org.opencontainers.image.description CI image: Rust + the four Android ABIs + cargo-ndk + Android SDK/NDK + JDK + ktlint + detekt + Node. For Kotlin/Compose apps with a Rust core.
org.opencontainers.image.licenses MIT
org.opencontainers.image.source https://git.fabledsword.com/bvandeusen/CI-runner
org.opencontainers.image.version 24.04
Details
Container
2026-09-07 00:06:13 -04:00
54
OCI / Docker
linux/amd64
MIT
1.7 GiB
Versions (2) View all
1.97 2026-09-07
latest 2026-09-07