Last active
September 14, 2018 13:37
-
-
Save kmccarth/a34877bd5f1023fd8fd0f7cebf257422 to your computer and use it in GitHub Desktop.
CircleCi + Android 27 Alpha + HqO goodies
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Built From: https://github.com/CircleCI-Public/circleci-dockerfiles/blob/master/android/images/api-27-alpha/Dockerfile | |
# | |
FROM openjdk:8-jdk-slim | |
LABEL maintainer="[email protected]" | |
# Initial Command run as `root`. | |
ADD https://raw.githubusercontent.com/circleci/circleci-images/master/android/bin/circle-android /bin/circle-android | |
RUN chmod +rx /bin/circle-android | |
# Skip the first line of the Dockerfile template (FROM ${BASE}) | |
# make Apt non-interactive | |
RUN echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/90circleci \ | |
&& echo 'DPkg::Options "--force-confnew";' >> /etc/apt/apt.conf.d/90circleci | |
ENV DEBIAN_FRONTEND=noninteractive | |
# man directory is missing in some base images | |
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863199 | |
RUN apt-get update \ | |
&& mkdir -p /usr/share/man/man1 \ | |
&& apt-get install -y \ | |
git mercurial xvfb \ | |
locales sudo openssh-client ca-certificates tar gzip parallel \ | |
net-tools netcat unzip zip bzip2 gnupg curl wget | |
# Set timezone to UTC by default | |
RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime | |
# Use unicode | |
RUN locale-gen C.UTF-8 || true | |
ENV LANG=C.UTF-8 | |
# install jq | |
RUN JQ_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/jq-latest" \ | |
&& curl --silent --show-error --location --fail --retry 3 --output /usr/bin/jq $JQ_URL \ | |
&& chmod +x /usr/bin/jq \ | |
&& jq --version | |
# Install Docker | |
# Docker.com returns the URL of the latest binary when you hit a directory listing | |
# We curl this URL and `grep` the version out. | |
# The output looks like this: | |
#> # To install, run the following commands as root: | |
#> curl -fsSLO https://download.docker.com/linux/static/stable/x86_64/docker-17.05.0-ce.tgz && tar --strip-components=1 -xvzf docker-17.05.0-ce.tgz -C /usr/local/bin | |
#> | |
#> # Then start docker in daemon mode: | |
#> /usr/local/bin/dockerd | |
RUN set -ex \ | |
&& export DOCKER_VERSION=$(curl --silent --fail --retry 3 https://download.docker.com/linux/static/stable/x86_64/ | grep -o -e 'docker-[.0-9]*-ce\.tgz' | sort -r | head -n 1) \ | |
&& DOCKER_URL="https://download.docker.com/linux/static/stable/x86_64/${DOCKER_VERSION}" \ | |
&& echo Docker URL: $DOCKER_URL \ | |
&& curl --silent --show-error --location --fail --retry 3 --output /tmp/docker.tgz "${DOCKER_URL}" \ | |
&& ls -lha /tmp/docker.tgz \ | |
&& tar -xz -C /tmp -f /tmp/docker.tgz \ | |
&& mv /tmp/docker/* /usr/bin \ | |
&& rm -rf /tmp/docker /tmp/docker.tgz \ | |
&& which docker \ | |
&& (docker version || true) | |
# docker compose | |
RUN COMPOSE_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/docker-compose-latest" \ | |
&& curl --silent --show-error --location --fail --retry 3 --output /usr/bin/docker-compose $COMPOSE_URL \ | |
&& chmod +x /usr/bin/docker-compose \ | |
&& docker-compose version | |
# install dockerize | |
RUN DOCKERIZE_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/dockerize-latest.tar.gz" \ | |
&& curl --silent --show-error --location --fail --retry 3 --output /tmp/dockerize-linux-amd64.tar.gz $DOCKERIZE_URL \ | |
&& tar -C /usr/local/bin -xzvf /tmp/dockerize-linux-amd64.tar.gz \ | |
&& rm -rf /tmp/dockerize-linux-amd64.tar.gz \ | |
&& dockerize --version | |
RUN groupadd --gid 3434 circleci \ | |
&& useradd --uid 3434 --gid circleci --shell /bin/bash --create-home circleci \ | |
&& echo 'circleci ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-circleci \ | |
&& echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep | |
# BEGIN IMAGE CUSTOMIZATIONS | |
# END IMAGE CUSTOMIZATIONS | |
USER circleci | |
CMD ["/bin/sh"] | |
# Now commands run as user `circleci` | |
# Switching user can confuse Docker's idea of $HOME, so we set it explicitly | |
ENV HOME /home/circleci | |
# Install Google Cloud SDK | |
RUN sudo apt-get update -qqy && sudo apt-get install -qqy \ | |
python-dev \ | |
python-setuptools \ | |
apt-transport-https \ | |
lsb-release | |
RUN sudo apt-get install gcc-multilib && \ | |
sudo easy_install -U pip && \ | |
sudo pip uninstall crcmod && \ | |
sudo pip install -U crcmod | |
RUN export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \ | |
echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \ | |
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - | |
RUN sudo apt-get update && sudo apt-get install -y google-cloud-sdk && \ | |
gcloud config set core/disable_usage_reporting true && \ | |
gcloud config set component_manager/disable_update_check true | |
ARG sdk_version=sdk-tools-linux-3859397.zip | |
ARG android_home=/opt/android/sdk | |
# SHA-256 444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0 | |
RUN sudo apt-get update && \ | |
sudo apt-get install --yes \ | |
xvfb lib32z1 lib32stdc++6 build-essential \ | |
libcurl4-openssl-dev libglu1-mesa libxi-dev libxmu-dev \ | |
libglu1-mesa-dev | |
# Install Ruby | |
RUN cd /tmp && wget -O ruby-install-0.6.1.tar.gz https://github.com/postmodern/ruby-install/archive/v0.6.1.tar.gz && \ | |
tar -xzvf ruby-install-0.6.1.tar.gz && \ | |
cd ruby-install-0.6.1 && \ | |
sudo make install && \ | |
ruby-install --cleanup ruby 2.4.3 && \ | |
rm -r /tmp/ruby-install-* | |
ENV PATH ${HOME}/.rubies/ruby-2.4.3/bin:${PATH} | |
RUN echo 'gem: --env-shebang --no-rdoc --no-ri' >> ~/.gemrc && gem install bundler | |
# Download and install Android SDK | |
RUN sudo mkdir -p ${android_home} && \ | |
sudo chown -R circleci:circleci ${android_home} && \ | |
curl --silent --show-error --location --fail --retry 3 --output /tmp/${sdk_version} https://dl.google.com/android/repository/${sdk_version} && \ | |
unzip -q /tmp/${sdk_version} -d ${android_home} && \ | |
rm /tmp/${sdk_version} | |
# Set environmental variables | |
ENV ANDROID_HOME ${android_home} | |
ENV ADB_INSTALL_TIMEOUT 120 | |
ENV PATH=${ANDROID_HOME}/emulator:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools:${PATH} | |
RUN mkdir ~/.android && echo '### User Sources for Android SDK Manager' > ~/.android/repositories.cfg | |
RUN yes | sdkmanager --licenses && sdkmanager --update | |
# Update SDK manager and install system image, platform and build tools | |
RUN sdkmanager \ | |
"tools" \ | |
"platform-tools" \ | |
"emulator" \ | |
"extras;android;m2repository" \ | |
"extras;google;m2repository" \ | |
"extras;google;google_play_services" | |
RUN sdkmanager \ | |
"build-tools;25.0.0" \ | |
"build-tools;25.0.1" \ | |
"build-tools;25.0.2" \ | |
"build-tools;25.0.3" \ | |
"build-tools;26.0.1" \ | |
"build-tools;26.0.2" \ | |
"build-tools;27.0.0" \ | |
"build-tools;27.0.1" \ | |
"build-tools;27.0.2" \ | |
"build-tools;27.0.3" \ | |
"build-tools;28.0.0" | |
# API_LEVEL string gets replaced by m4 | |
RUN sdkmanager "platforms;android-27" | |
RUN sudo apt remove cmdtest | |
RUN sudo apt remove yarn | |
RUN sudo apt-get update | |
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - | |
RUN curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - | |
RUN sudo apt-get install nodejs npm | |
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list | |
RUN sudo apt-get update | |
RUN sudo apt-get install yarn |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment