blob: 081d9410b7bd0578559ac173aa59e3998ab19084 [file]
# Copyright 2025 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
FROM gcr.io/dockerized-tradefed/tradefed:latest as tf
FROM python:3.11-slim-bookworm AS build
ARG ARTIFACT_DIR="tf_artifact"
# attr, unzip are for CTS specifically.
# squashfs-tools is for Uprev specifically.
RUN apt-get update \
&& apt-get install -y \
attr \
ca-certificates \
cpio \
curl \
fuse \
fuse-zip \
git \
iproute2 \
iputils-ping \
openssh-client \
ssh \
sudo \
unzip \
wget \
xxd
# Install SDK tools (aapt, adb, fastboot, mke2fs)
RUN mkdir -p /usr/lib/android-sdk/lib64
RUN wget -q --retry-connrefused -O build-tools.zip https://dl.google.com/android/repository/build-tools_r34-linux.zip \
&& unzip -jq build-tools.zip -d /usr/lib/android-sdk android-14/aapt \
&& unzip -jq build-tools.zip -d /usr/lib/android-sdk android-14/aapt2 \
&& unzip -jq build-tools.zip -d /usr/lib/android-sdk/lib64 android-14/lib64/* \
&& rm build-tools.zip \
&& ln -sf /usr/lib/android-sdk/aapt /usr/bin/aapt \
&& ln -sf /usr/lib/android-sdk/aapt2 /usr/bin/aapt2
ENV LD_LIBRARY_PATH /usr/lib/android-sdk/lib64:${LD_LIBRARY_PATH}
ENV ANDROID_HOME=/usr/lib/android-sdk
# Point /usr/bin/python3 to usr/local/bin/python3. See b/191884161
RUN sudo rm /usr/bin/python3*; exit 0
RUN sudo ln -s /usr/local/bin/python3 /usr/bin/python3
RUN useradd -m chromeos-test
RUN echo 'chromeos-test ALL=NOPASSWD:ALL' > /etc/sudoers.d/chromeos-test
# Installing JDK21 (used by default)
RUN mkdir -p /jdk/jdk21 && \
cd /jdk/jdk21 && \
git init && \
git remote add origin https://android.googlesource.com/platform/prebuilts/jdk/jdk21.git && \
git config core.sparseCheckout true && \
echo "linux-x86/" >> .git/info/sparse-checkout && \
git fetch origin a312302ee53bf1c942180d3b63c29ffc23d9dfb4 --depth 1 && \
git checkout a312302ee53bf1c942180d3b63c29ffc23d9dfb4 && \
rm -rf .git/ && \
cd -
ENV JAVA_HOME=/jdk/jdk21/linux-x86
ENV PATH=$JAVA_HOME/bin:$PATH
# Extract Tradefed console.
RUN mkdir /tradefed
COPY ${ARTIFACT_DIR}/tradefed/cros-xts-metadata/tradefed.zip tradefed.zip
RUN unzip tradefed.zip -d /tradefed/
RUN chown -R chromeos-test:chromeos-test /tradefed
RUN rm tradefed.zip
COPY --from=tf --chown=chromeos-test:chromeos-test /tradefed/adb /tradefed/adb
RUN chmod 750 /tradefed/adb
# Cros-test binary is static across boards.
COPY --chown=chromeos-test:chromeos-test cros-test /usr/bin/
# Do a final chown on /tmp/test
RUN chmod 755 /usr/bin/cros-test
RUN mkdir /tmp/test
RUN chown -R chromeos-test:chromeos-test /tmp/test/
USER chromeos-test
ENV TZ=Etc/UTC
ENV USE_HOST_ADB=true
ENV GLOBAL_LOG_PATH=/tmp/test/logs
ENV TRADEFED_OPTS="-DCTS_ROOT=/tmp/xts_suite_mount -DDTS_ROOT=/tmp/xts_suite_mount -DVTS_ROOT=/tmp/xts_suite_mount -DGTS_ROOT=/tmp/xts_suite_mount -DSTS_ROOT=/tmp/xts_suite_mount -DAPTS_ROOT=/tmp/xts_suite_mount"
ENV PATH=/tradefed:$PATH