1# Copyright 2021 The gRPC Authors 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15FROM debian:10 16 17#================= 18# Basic C core dependencies 19 20# C/C++ dependencies according to https://github.com/grpc/grpc/blob/master/BUILDING.md 21RUN apt-get update && apt-get install -y \ 22 build-essential \ 23 autoconf \ 24 libtool \ 25 pkg-config \ 26 && apt-get clean 27 28# GCC 29RUN apt-get update && apt-get install -y \ 30 gcc \ 31 g++ \ 32 && apt-get clean 33 34# libc6 35RUN apt-get update && apt-get install -y \ 36 libc6 \ 37 libc6-dbg \ 38 libc6-dev \ 39 && apt-get clean 40 41# Tools 42RUN apt-get update && apt-get install -y \ 43 bzip2 \ 44 curl \ 45 dnsutils \ 46 git \ 47 lcov \ 48 make \ 49 strace \ 50 time \ 51 unzip \ 52 wget \ 53 zip \ 54 && apt-get clean 55 56#==================== 57# run_tests.py python dependencies 58 59# Basic python dependencies to be able to run tools/run_tests python scripts 60# These dependencies are not sufficient to build gRPC Python, gRPC Python 61# deps are defined elsewhere (e.g. python_deps.include) 62RUN apt-get update && apt-get install -y \ 63 python3 \ 64 python3-pip \ 65 python3-setuptools \ 66 python3-yaml \ 67 && apt-get clean 68 69# use pinned version of pip to avoid sudden breakages 70RUN python3 -m pip install --upgrade pip==19.3.1 71 72# TODO(jtattermusch): currently six is needed for tools/run_tests scripts 73# but since our python2 usage is deprecated, we should get rid of it. 74RUN python3 -m pip install six==1.16.0 75 76# Google Cloud Platform API libraries 77# These are needed for uploading test results to BigQuery (e.g. by tools/run_tests scripts) 78RUN python3 -m pip install --upgrade google-auth==1.23.0 google-api-python-client==1.12.8 oauth2client==4.1.0 79 80 81#================= 82# Install cmake 83# Note that this step should be only used for distributions that have new enough cmake to satisfy gRPC's cmake version requirement. 84 85RUN apt-get update && apt-get install -y cmake && apt-get clean 86 87 88RUN mkdir /var/local/jenkins 89 90 91# Java required by Android SDK (using Eclipse Temurin Package) 92RUN apt install -y wget apt-transport-https && \ 93 mkdir -p /etc/apt/keyrings && \ 94 wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc && \ 95 echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list 96RUN apt update && apt install -y temurin-8-jdk 97 98# Install Android SDK 99ENV ANDROID_SDK_VERSION 4333796 100RUN mkdir -p /opt/android-sdk && cd /opt/android-sdk && \ 101 wget -q https://dl.google.com/android/repository/sdk-tools-linux-$ANDROID_SDK_VERSION.zip && \ 102 unzip -q sdk-tools-linux-$ANDROID_SDK_VERSION.zip && \ 103 rm sdk-tools-linux-$ANDROID_SDK_VERSION.zip 104ENV ANDROID_SDK_PATH /opt/android-sdk 105ENV ANDROID_HOME /opt/android-sdk 106RUN yes | $ANDROID_SDK_PATH/tools/bin/sdkmanager --licenses # accept all licenses 107 108# Install gcloud 109RUN curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-407.0.0-linux-x86_64.tar.gz && \ 110 tar -xf google-cloud-cli-407.0.0-linux-x86_64.tar.gz && \ 111 ./google-cloud-sdk/install.sh --bash-completion=false --path-update=true && \ 112 rm -rf google-cloud-cli-407.0.0-linux-x86_64.tar.gz 113RUN ln -s /google-cloud-sdk/bin/gcloud /usr/local/bin/gcloud 114 115# Define the default command. 116CMD ["bash"] 117