Skip to content
This repository was archived by the owner on Jul 5, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions 26/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
FROM openjdk:8-jdk
MAINTAINER Maychell Oliveira <[email protected]>

# Android SDK
ENV ANDROID_HOME /srv/var/android-sdk

# Install required tools
RUN apt-get --quiet update --yes \
&& apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 --no-install-recommends

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remember to remove unneeded dependencies in the end (wget, tar, unzip...).


# Install Android SDK tools into ${ANDROID_HOME}
RUN mkdir -p ${ANDROID_HOME}
RUN wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip \
&& unzip android-sdk.zip -d ${ANDROID_HOME} \
&& rm -f android-sdk.zip

# Accept "android-sdk-license" before installing components, no need to echo y for each component
# License is valid for all the standard components in versions installed from this file
# Non-standard components: MIPS system images, preview versions, GDK (Google Glass) and Android Google TV require separate licenses, not accepted there
RUN mkdir -p ${ANDROID_HOME}/licenses \
&& echo 8933bad161af4178b1185d1a37fbf41ea5269c55 > ${ANDROID_HOME}/licenses/android-sdk-license

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this hash? If this is a license itself, it's not safe to add to the image.

We can create ${ANDROID_HOME}/licenses as a volume and force to add license on run (with a mounted volume, env var, etc).


# Install platform tools
RUN ln -s ${ANDROID_HOME}/tools/bin/sdkmanager /usr/bin/sdkmanager \
&& sdkmanager "platform-tools"

# Emulator
ENV EMULATOR_HOME /srv/var/emulator
# Download emulator
RUN wget https://dl.google.com/android/repository/emulator-linux-4077558.zip -O emulator.zip \
&& unzip -q emulator.zip -d $EMULATOR_HOME \
&& rm -f emulator.zip

# SDKs
# Please keep these in descending order!
RUN echo y | sdkmanager \
"platforms;android-26" \
"build-tools;26.0.2"

RUN ln -s ${EMULATOR_HOME}/emulator64-x86 /usr/bin/emulator64-x86 && \

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Join all the RUN commands into a single one for a shallow image.

emulator64-x86 -avd test -no-window -no-audio &

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this command ends with an &? 🤔

Docker images should not spawn process before the CMD entry.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is something required for a posterior CMDentry it should be on the ENTRYPOINT

33 changes: 31 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,31 @@
# docker-ci-android
Docker Android images used by Gitlab CI
# Codeminer42 Android Image for CI builds

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add an usage instructions/example to the readme


Docker Android images used by Gitlab CI.

## Dependencies

The following dependencies are being installed on all images:

* Android 26 sdk for linux
* Android Emulator

## Tags

We currently have images for the following Android versions.

### Android images

- `26`, `latest` [Dockerfile](https://github.com/Codeminer42/docker-ci-android/blob/master/26/Dockerfile)

## Contributing

`Dockerfiles` are stored under folders for each version.

For updating the images, just open a _pull request_ with
the new `Dockerfile` version and, after accepted, Docker
Hub will build automatically after a few minutes.

The images should setup an environment that is widely used,
please don't install dependencies that are specific to a
project. It's also good to have a pattern and all images
support the same things.