From df1c9ad627ea9b9d31889ba2cb2931601b789975 Mon Sep 17 00:00:00 2001 From: Anton Malinskiy Date: Mon, 12 Feb 2018 16:35:59 +0700 Subject: [PATCH] Add Makefile --- Makefile | 38 ++++++++++++++++++++++++++++++++++++++ generate.sh | 21 --------------------- templates/Dockerfile | 12 ++++++------ templates/Makefile | 29 +++++++++++++++++++++++++++++ templates/config.ini | 2 +- templates/start.sh | 4 ++-- 6 files changed, 76 insertions(+), 30 deletions(-) create mode 100644 Makefile delete mode 100644 generate.sh create mode 100644 templates/Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b6848fe --- /dev/null +++ b/Makefile @@ -0,0 +1,38 @@ +SHELL := /usr/bin/env bash +VERSIONS = android-16 android-17 android-18 android-19 android-21 android-22 android-23 android-24 android-25 android-26 + +generate: + for version in $(VERSIONS); do \ + mkdir -p ./build/$$version ; \ + sed "s/{{ platform }}/$$version/" templates/Dockerfile > build/$$version/Dockerfile ; \ + sed "s/{{ platform }}/$$version/" templates/config.ini > build/$$version/config.ini ; \ + sed "s/{{ platform }}/$$version/" templates/start.sh > build/$$version/start.sh ; \ + sed "s/{{ platform }}/$$version/" templates/Makefile > build/$$version/Makefile ; \ + cp base/* ./build/$$version ; \ + done + +clean: + rm -rf ./build + +build: generate + for version in $(VERSIONS); do \ + $(MAKE) -C build/$$version build; \ + done + +lint: generate + for version in $(VERSIONS); do \ + $(MAKE) -C build/$$version lint; \ + done + +tag: generate + for version in $(VERSIONS); do \ + $(MAKE) -C build/$$version tag; \ + done + +login: + @docker login -u "$(DOCKER_USER)" -p "$(DOCKER_PASS)" + +push: login + for version in $(VERSIONS); do \ + $(MAKE) -C build/$$version push; \ + done diff --git a/generate.sh b/generate.sh deleted file mode 100644 index 25498b2..0000000 --- a/generate.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -function createDockerfile() { - platform=$1 - mkdir -p ./build/$platform - docker run -e PLATFORM="$platform" -v $(pwd):/src hairyhenderson/gomplate --input-dir=/src/templates --output-dir=/src/build/$platform - cp base/* ./build/$platform -} - -rm -rf ./build - -createDockerfile android-16 -createDockerfile android-17 -createDockerfile android-18 -createDockerfile android-19 -createDockerfile android-21 -createDockerfile android-22 -createDockerfile android-23 -createDockerfile android-24 -createDockerfile android-25 -createDockerfile android-26 diff --git a/templates/Dockerfile b/templates/Dockerfile index 25b92b1..8b4162e 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -32,17 +32,17 @@ RUN dpkg --add-architecture i386 && \ # Customized steps per specific platform yes | sdkmanager --no_https --licenses && \ - sdkmanager --no_https emulator tools platform-tools "platforms;{{ .Env.PLATFORM }}" "system-images;{{ .Env.PLATFORM }};google_apis;x86" --verbose && \ - echo no | avdmanager create avd -n "x86" --package "system-images;{{ .Env.PLATFORM }};google_apis;x86" --tag google_apis && \ + sdkmanager --no_https emulator tools platform-tools "platforms;{{ platform }}" "system-images;{{ platform }};google_apis;x86" --verbose && \ + echo no | avdmanager create avd -n "x86" --package "system-images;{{ platform }};google_apis;x86" --tag google_apis && \ # Unfilter devices (now local because CI downloads from github are unstable) # curl -o /root/.android/adb_usb.ini https://raw.githubusercontent.com/apkudo/adbusbini/master/adb_usb.ini && \ # Optimize size of the image rm /root/.android/avd/x86.avd/userdata.img && \ - tar -czvf /opt/android-sdk-linux/system-images/{{ .Env.PLATFORM }}/google_apis/x86/userdata.img.tar.gz /opt/android-sdk-linux/system-images/{{ .Env.PLATFORM }}/google_apis/x86/userdata.img && \ - rm /opt/android-sdk-linux/system-images/{{ .Env.PLATFORM }}/google_apis/x86/userdata.img && \ - tar -czvf /opt/android-sdk-linux/system-images/{{ .Env.PLATFORM }}/google_apis/x86/system.img.tar.gz /opt/android-sdk-linux/system-images/{{ .Env.PLATFORM }}/google_apis/x86/system.img && \ - rm /opt/android-sdk-linux/system-images/{{ .Env.PLATFORM }}/google_apis/x86/system.img && \ + tar -czvf /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.img.tar.gz /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.img && \ + rm /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.img && \ + tar -czvf /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.img.tar.gz /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.img && \ + rm /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.img && \ DEBIAN_FRONTEND=noninteractive apt-get purge -yq unzip openjdk-8-jdk && \ apt-get -yq autoremove && \ diff --git a/templates/Makefile b/templates/Makefile new file mode 100644 index 0000000..a51be06 --- /dev/null +++ b/templates/Makefile @@ -0,0 +1,29 @@ +OWNER=agoda +IMAGE_NAME=docker-emulator-{{ platform }} +VCS_REF=`git rev-parse --short HEAD` +IMAGE_VERSION=1.0.$(TRAVIS_BUILD_NUMBER) +QNAME=$(OWNER)/$(IMAGE_NAME) + +GIT_TAG=$(QNAME):$(VCS_REF) +BUILD_TAG=$(QNAME):$(IMAGE_VERSION) +LATEST_TAG=$(QNAME):latest + +ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +build: + docker build \ + --build-arg VCS_REF=$(VCS_REF) \ + --build-arg IMAGE_VERSION=$(IMAGE_VERSION) \ + -t $(GIT_TAG) $(ROOT_DIR) + +lint: + docker run -it --rm -v "$(ROOT_DIR)/Dockerfile:/Dockerfile:ro" redcoolbeans/dockerlint + +tag: + docker tag $(GIT_TAG) $(BUILD_TAG) + docker tag $(GIT_TAG) $(LATEST_TAG) + +push: + docker push $(GIT_TAG) + docker push $(BUILD_TAG) + docker push $(LATEST_TAG) diff --git a/templates/config.ini b/templates/config.ini index e2f1296..c432c23 100644 --- a/templates/config.ini +++ b/templates/config.ini @@ -26,7 +26,7 @@ hw.ramSize=1536 hw.sensors.orientation=yes hw.sensors.proximity=yes hw.trackBall=no -image.sysdir.1=system-images/{{ .Env.PLATFORM }}/google_apis/x86/ +image.sysdir.1=system-images/{{ platform }}/google_apis/x86/ runtime.network.latency=none runtime.network.speed=full showDeviceFrame=no diff --git a/templates/start.sh b/templates/start.sh index 46b83b1..25f0e37 100644 --- a/templates/start.sh +++ b/templates/start.sh @@ -36,8 +36,8 @@ x11vnc -display :1 -nopw -forever & # qemu references bios by relative path cd /opt/android-sdk-linux/emulator -tar -xvf /opt/android-sdk-linux/system-images/{{ .Env.PLATFORM }}/google_apis/x86/userdata.img.tar.gz --directory / -tar -xvf /opt/android-sdk-linux/system-images/{{ .Env.PLATFORM }}/google_apis/x86/system.img.tar.gz --directory / +tar -xvf /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.img.tar.gz --directory / +tar -xvf /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.img.tar.gz --directory / CONFIG="/root/.android/avd/x86.avd/config.ini" CONFIGTMP=${CONFIG}.tmp