mirror of
https://github.com/budtmo/docker-android.git
synced 2026-07-31 04:07:25 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0188131350 | ||
|
|
371a57c663 | ||
|
|
6d4de35602 | ||
|
|
51158d8630 | ||
|
|
3a7cba3dc9 | ||
|
|
4bb9f044ed | ||
|
|
0e35dab27f | ||
|
|
14a98aea88 | ||
|
|
337aaf5103 | ||
|
|
f5e86d5806 | ||
|
|
caf2cb2cd8 | ||
|
|
03f2ea256a | ||
|
|
af2d302bbc | ||
|
|
b6752ea535 | ||
|
|
06a8e83922 | ||
|
|
a7e7eaa5aa | ||
|
|
d2c82d05c7 | ||
|
|
79d36e1536 | ||
|
|
90ff1782ae | ||
|
|
92e4933521 | ||
|
|
4f9469db55 | ||
|
|
cc409b9914 | ||
|
|
4cc5a36c32 | ||
|
|
ed77303a16 | ||
|
|
5696fe3ea0 | ||
|
|
b39a8784b7 | ||
|
|
fcb1f2ec31 | ||
|
|
49113f2cb4 | ||
|
|
0a8b7c07a2 | ||
|
|
49b9c44f3a |
-30
@@ -1,30 +0,0 @@
|
||||
language: python
|
||||
|
||||
python:
|
||||
- "3.5"
|
||||
|
||||
sudo: required
|
||||
|
||||
services:
|
||||
- docker
|
||||
|
||||
install: "pip install -r requirements.txt"
|
||||
|
||||
env:
|
||||
- ANDROID_VERSION=5.0.1
|
||||
- ANDROID_VERSION=5.1.1
|
||||
- ANDROID_VERSION=6.0
|
||||
- ANDROID_VERSION=7.0
|
||||
- ANDROID_VERSION=7.1.1
|
||||
- ANDROID_VERSION=8.0
|
||||
- ANDROID_VERSION=8.1
|
||||
- ANDROID_VERSION=9.0
|
||||
- ANDROID_VERSION=10.0
|
||||
- ANDROID_VERSION=11.0
|
||||
- REAL_DEVICE=True
|
||||
- GENYMOTION=True
|
||||
|
||||
script: bash travis.sh
|
||||
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
@@ -4,11 +4,12 @@
|
||||
|
||||
[](https://github.com/igrigorik/ga-beacon "Analytics")
|
||||
[](https://gitter.im/budtmo/docker-android?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://travis-ci.org/budtmo/docker-android)
|
||||
[](https://dev.azure.com/budtmoos/budtmoos/_build/latest?definitionId=7&branchName=master)
|
||||
[](https://codecov.io/gh/budtmo/docker-android)
|
||||
[](https://www.codacy.com/app/butomo1989/docker-appium?utm_source=github.com&utm_medium=referral&utm_content=butomo1989/docker-appium&utm_campaign=Badge_Grade)
|
||||
[](https://github.com/budtmo/docker-android/releases)
|
||||
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fbudtmo%2Fdocker-android?ref=badge_shield)
|
||||
[](http://paypal.me/budtmo)
|
||||
[](http://makeapullrequest.com)
|
||||
|
||||
Docker-Android is a docker image built to be used for everything related to mobile website testing and Android project.
|
||||
@@ -53,6 +54,7 @@ List of Docker images
|
||||
|Linux|9.0|28|chrome|66.0|2.40|budtmo/docker-android-x86-9.0|[](https://microbadger.com/images/budtmo/docker-android-x86-9.0 "Get your own image badge on microbadger.com")|
|
||||
|Linux|10.0|29|chrome|74.0|74.0.3729.6|budtmo/docker-android-x86-10.0|[](https://microbadger.com/images/budtmo/docker-android-x86-10.0 "Get your own image badge on microbadger.com")|
|
||||
|Linux|11.0|30|chrome|83.0|83.0.4103.39|budtmo/docker-android-x86-11.0|[](https://microbadger.com/images/budtmo/docker-android-x86-11.0 "Get your own image badge on microbadger.com")|
|
||||
|Linux|12.0|31|chrome|93.0|93.0.4577.15|budtmo/docker-android-x86-12.0|[](https://microbadger.com/images/budtmo/docker-android-x86-12.0 "Get your own image badge on microbadger.com")|
|
||||
|All |-|-|-|-|-|budtmo/docker-android-real-device|[](https://microbadger.com/images/budtmo/docker-android-real-device "Get your own image badge on microbadger.com")|
|
||||
|All|All|All|All|All|All|budtmo/docker-android-genymotion|[](https://microbadger.com/images/budtmo/docker-android-genymotion "Get your own image badge on microbadger.com")|
|
||||
|
||||
@@ -81,7 +83,14 @@ Docker is installed in your system.
|
||||
Quick Start
|
||||
-----------
|
||||
|
||||
1. Run Docker-Android
|
||||
1. Your machine need to support virtualization. To check it:
|
||||
|
||||
```
|
||||
sudo apt install cpu-checker
|
||||
kvm-ok
|
||||
```
|
||||
|
||||
2. Run Docker-Android
|
||||
|
||||
- For ***Linux OS***, please use image name that contains "x86"
|
||||
|
||||
@@ -92,7 +101,7 @@ Quick Start
|
||||
- For ***OSX*** and ***Windows OS***, please use Virtual Machine that support Virtualization with Ubuntu OS
|
||||
|
||||
|
||||
2. Verify the ip address of docker host.
|
||||
3. Verify the ip address of docker host.
|
||||
|
||||
- For OSX, you can find out by using following command:
|
||||
|
||||
@@ -102,12 +111,12 @@ Quick Start
|
||||
|
||||
- For different OS, localhost should work.
|
||||
|
||||
3. Open ***http://docker-host-ip-address:6080*** from web browser. Note: Adding ```?view_only=true``` will give user only view only permission.
|
||||
4. Open ***http://docker-host-ip-address:6080*** from web browser. Note: Adding ```?view_only=true``` will give user only view only permission.
|
||||
|
||||
Custom configurations
|
||||
---------------------
|
||||
|
||||
[This document](README_CUSTOM_CONFIG.md) contains custom configurations of Docker-Android that you might need, e.g. Proxy, Changing language on fly, etc.
|
||||
[This document](README_CUSTOM_CONFIG.md) contains custom configurations of Docker-Android that you might need, e.g. Proxy, Changing language on fly, etc.
|
||||
|
||||
Build Android project
|
||||
---------------------
|
||||
@@ -125,31 +134,31 @@ Docker-Android can be used for building Android project and executing its unit t
|
||||
```bash
|
||||
docker run -it --rm -v $PWD/testing-samples/ui/espresso/BasicSample:/tmp -w /tmp budtmo/docker-android-x86-8.1 /tmp/gradlew build
|
||||
```
|
||||
|
||||
|
||||
Control Android connected to host (Emulator or Real Device)
|
||||
-----------------------------------------------------------
|
||||
1. Create a docker container with this command
|
||||
1. Create a docker container with this command
|
||||
|
||||
```
|
||||
$ docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -p 4723:4723 --name android-container-appium budtmo/docker-android-real-device
|
||||
```
|
||||
|
||||
|
||||
2. Open noVNC [http://localhost:6080](http://localhost:6080)
|
||||
|
||||
3. Open terminal by clicking right on **noVNC** window >> **Terminal emulator**
|
||||
|
||||
4. To connect to host's adb (make sure your host have adb and connected to the device.)
|
||||
4. To connect to host's adb (make sure your host have adb and connected to the device.)
|
||||
|
||||
```
|
||||
$ adb -H host.docker.internal devices
|
||||
```
|
||||
|
||||
|
||||
To specify port, just add `-P port_number`
|
||||
|
||||
```
|
||||
$ adb -H host.docker.internal -P 5037 devices
|
||||
```
|
||||
|
||||
|
||||
5. Now your container can access your host devices. But, you need to add `remoteAdbHost` and `adbPort` desired capabilities to make **Appium** can recognise those devices.
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM appium/appium:1.21.0-p0
|
||||
FROM appium/appium:v1.21.0-p1
|
||||
|
||||
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM appium/appium:1.21.0-p0
|
||||
FROM appium/appium:v1.21.0-p1
|
||||
|
||||
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM appium/appium:1.21.0-p0
|
||||
FROM appium/appium:v1.21.0-p1
|
||||
|
||||
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
trigger:
|
||||
tags:
|
||||
include:
|
||||
- v*
|
||||
|
||||
jobs:
|
||||
- job: build_and_release_emulators
|
||||
pool:
|
||||
vmImage: ubuntu-20.04
|
||||
strategy:
|
||||
maxParallel: 10
|
||||
matrix:
|
||||
5.0.1:
|
||||
android.version: '5.0.1'
|
||||
5.1.1:
|
||||
android.version: '5.1.1'
|
||||
6.0:
|
||||
android.version: '6.0'
|
||||
7.0:
|
||||
android.version: '7.0'
|
||||
7.1.1:
|
||||
android.version: '7.1.1'
|
||||
8.0:
|
||||
android.version: '8.0'
|
||||
8.1:
|
||||
android.version: '8.1'
|
||||
9.0:
|
||||
android.version: '9.0'
|
||||
10.0:
|
||||
android.version: '10.0'
|
||||
11.0:
|
||||
android.version: '11.0'
|
||||
12.0:
|
||||
android.version: '12.0'
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.5'
|
||||
displayName: 'Use Python 3.5'
|
||||
|
||||
- script: |
|
||||
latest_tag=$(git describe --tags --abbrev=0)
|
||||
echo "##vso[task.setvariable variable=release_version]$latest_tag"
|
||||
|
||||
displayName: 'Get the latest release tag'
|
||||
|
||||
- script: |
|
||||
docker login -u $(DOCKER_USERNAME) -p=$(DOCKER_PASSWORD)
|
||||
TOKEN=$(polyverse_token) ./release.sh all $(android.version) $(release_version)
|
||||
docker logout
|
||||
|
||||
displayName: 'Build docker image, run unit tests and push the docker image'
|
||||
|
||||
- script: bash <(curl -s https://codecov.io/bash)
|
||||
displayName: 'Publish test result'
|
||||
@@ -0,0 +1,37 @@
|
||||
trigger:
|
||||
tags:
|
||||
include:
|
||||
- v*
|
||||
|
||||
jobs:
|
||||
- job: build_and_release_genymotion_and_device
|
||||
pool:
|
||||
vmImage: ubuntu-20.04
|
||||
strategy:
|
||||
maxParallel: 2
|
||||
matrix:
|
||||
genymotion:
|
||||
script.name: './release_real.sh'
|
||||
real_device:
|
||||
script.name: './release_geny.sh'
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.5'
|
||||
displayName: 'Use Python 3.5'
|
||||
|
||||
- script: |
|
||||
latest_tag=$(git describe --tags --abbrev=0)
|
||||
echo "##vso[task.setvariable variable=release_version]$latest_tag"
|
||||
|
||||
displayName: 'Get the latest release tag'
|
||||
|
||||
- script: |
|
||||
docker login -u $(DOCKER_USERNAME) -p=$(DOCKER_PASSWORD)
|
||||
TOKEN=$(p_token) $(script.name) all $(release_version)
|
||||
docker logout
|
||||
|
||||
displayName: 'Build docker image, run unit tests and push the docker image'
|
||||
|
||||
- script: bash <(curl -s https://codecov.io/bash)
|
||||
displayName: 'Publish test result'
|
||||
@@ -0,0 +1,29 @@
|
||||
trigger:
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
|
||||
pr:
|
||||
branches:
|
||||
include:
|
||||
- '*'
|
||||
|
||||
variables:
|
||||
- name: app_version
|
||||
value: test
|
||||
|
||||
jobs:
|
||||
- job: build_and_test
|
||||
pool:
|
||||
vmImage: ubuntu-20.04
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.5'
|
||||
displayName: 'Use Python 3.5'
|
||||
- script: pip install -r requirements.txt
|
||||
displayName: 'Install pip packages'
|
||||
- script: ./release.sh test 7.1.1 $(app_version)
|
||||
displayName: 'Build Docker image with Android 7.1.1 and run unit tests'
|
||||
- script: bash <(curl -s https://codecov.io/bash)
|
||||
displayName: 'Publish test result'
|
||||
+10
-6
@@ -10,7 +10,7 @@ else
|
||||
fi
|
||||
|
||||
if [ -z "$2" ]; then
|
||||
read -p "Android version (5.0.1|5.1.1|6.0|7.0|7.1.1|8.0|8.1|9.0|10.0|11.0|all): " ANDROID_VERSION
|
||||
read -p "Android version (5.0.1|5.1.1|6.0|7.0|7.1.1|8.0|8.1|9.0|10.0|11.0|12.0|all): " ANDROID_VERSION
|
||||
else
|
||||
ANDROID_VERSION=$2
|
||||
fi
|
||||
@@ -32,6 +32,7 @@ declare -A list_of_levels=(
|
||||
[9.0]=28
|
||||
[10.0]=29
|
||||
[11.0]=30
|
||||
[12.0]=31
|
||||
)
|
||||
|
||||
# The version of the Chrome browser installed on the Android emulator needs to be known beforehand
|
||||
@@ -47,6 +48,7 @@ declare -A chromedriver_versions=(
|
||||
[9.0]="2.40"
|
||||
[10.0]="74.0.3729.6"
|
||||
[11.0]="83.0.4103.39"
|
||||
[12.0]="93.0.4577.15"
|
||||
)
|
||||
|
||||
function get_android_versions() {
|
||||
@@ -66,7 +68,7 @@ function get_android_versions() {
|
||||
|
||||
# If version cannot be found in the list
|
||||
if [ -z "$versions" ]; then
|
||||
echo "Android version \"$ANDROID_VERSION\" is not found in the list or not supported! Support only version 5.0.1, 5.1.1, 6.0, 7.0, 7.1.1, 8.0, 8.1"
|
||||
echo "Android version \"$ANDROID_VERSION\" is not found in the list or not supported! Support only version 5.0.1, 5.1.1, 6.0, 7.0, 7.1.1, 8.0, 8.1, 9.0, 10.0, 11.0, 12.0"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -141,6 +143,8 @@ function build() {
|
||||
FILE_NAME=docker/Emulator_x86
|
||||
|
||||
for v in "${versions[@]}"; do
|
||||
level=${list_of_levels[$v]}
|
||||
|
||||
# Find image type and default web browser
|
||||
if [ "$v" == "5.0.1" ] || [ "$v" == "5.1.1" ]; then
|
||||
IMG_TYPE=default
|
||||
@@ -151,17 +155,17 @@ function build() {
|
||||
BROWSER=browser
|
||||
elif [ "$v" == "" ]; then
|
||||
IMG_TYPE=google_apis
|
||||
BROWSER=chrome
|
||||
BROWSER=chrome
|
||||
else
|
||||
#adb root cannot be run in IMG_TYPE=google_apis_playstore
|
||||
#adb root cannot be run in IMG_TYPE=google_apis_playstore
|
||||
IMG_TYPE=google_apis
|
||||
BROWSER=chrome
|
||||
if [ "$v" == "9.0" ]; then
|
||||
# Google dropped 32-bit support at Android 12
|
||||
if [ "$v" == "9.0" ] || [ $level -ge 31 ]; then
|
||||
processor=x86_64
|
||||
fi
|
||||
fi
|
||||
echo "[BUILD] IMAGE TYPE: $IMG_TYPE"
|
||||
level=${list_of_levels[$v]}
|
||||
echo "[BUILD] API Level: $level"
|
||||
sys_img=$processor
|
||||
echo "[BUILD] System Image: $sys_img"
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
IMAGE_NAME="budtmo/docker-android"
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
read -p "Type : " TYPE
|
||||
else
|
||||
TYPE=$1
|
||||
fi
|
||||
|
||||
if [ -z "$2" ]; then
|
||||
read -p "Version : " VERSION
|
||||
else
|
||||
VERSION=$2
|
||||
fi
|
||||
|
||||
declare -a versions=("7.1.1" "7.0" "6.0" "5.1.1" "5.0.1")
|
||||
|
||||
## now loop through the above array
|
||||
for v in "${versions[@]}"
|
||||
do
|
||||
IMAGE="$IMAGE_NAME-$TYPE-$v"
|
||||
IMAGE_OLD="$IMAGE:$VERSION"
|
||||
IMAGE_LATEST="$IMAGE:latest"
|
||||
echo "Revert image \"$IMAGE_LATEST\" to version \"$IMAGE_OLD\""
|
||||
docker pull $IMAGE_OLD
|
||||
docker tag $IMAGE_OLD $IMAGE_LATEST
|
||||
docker push $IMAGE_LATEST
|
||||
done
|
||||
+2
-1
@@ -3,6 +3,7 @@
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import uuid
|
||||
|
||||
@@ -56,7 +57,7 @@ def is_initialized(device_name) -> bool:
|
||||
if os.path.exists(config_path):
|
||||
logger.info('Found existing config file at {}.'.format(config_path))
|
||||
with open(config_path, 'r') as f:
|
||||
if any('hw.device.name={}'.format(device_name) in line for line in f):
|
||||
if any(re.match(r'hw\.device\.name ?= ?{}'.format(device_name), line) for line in f):
|
||||
logger.info('Existing config file references {}. Assuming device was previously initialized.'.format(device_name))
|
||||
return True
|
||||
else:
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Bash version should >= 4 to be able to run this script.
|
||||
|
||||
if [ -z "$TRAVIS_TAG" ]; then
|
||||
echo "UNIT TEST ONLY"
|
||||
bash release.sh test all all 0.1
|
||||
else
|
||||
if [ ! -z "$ANDROID_VERSION" ]; then
|
||||
echo "Log in to docker hub"
|
||||
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
|
||||
echo "[Version: $ANDROID_VERSION] RUN UNIT TEST, BUILD DOCKER IMAGES AND PUSH THOSE TO DOCKER HUB"
|
||||
bash release.sh all $ANDROID_VERSION $TRAVIS_TAG
|
||||
elif [ ! -z "$REAL_DEVICE" ]; then
|
||||
echo "[SUPPORT FOR REAL DEVICE: BUILD DOCKER IMAGES AND PUSH THOSE TO DOCKER HUB ]"
|
||||
bash release_real.sh all $TRAVIS_TAG
|
||||
elif [ ! -z "$GENYMOTION" ]; then
|
||||
echo "[SUPPORT FOR GENYMOTION: BUILD DOCKER IMAGES AND PUSH THOSE TO DOCKER HUB ]"
|
||||
bash release_genymotion.sh all $TRAVIS_TAG
|
||||
fi
|
||||
echo "Log out of docker hub"
|
||||
docker logout
|
||||
fi
|
||||
Reference in New Issue
Block a user