Compare commits

...
36 Commits
Author SHA1 Message Date
budtmo caf2cb2cd8 Fixed pip issue on Azure DevOps 2021-06-21 12:15:51 +02:00
budtmo 03f2ea256a Fixed wrong name 2021-06-21 12:10:18 +02:00
budtmo af2d302bbc Formatted 2021-06-21 11:45:36 +02:00
budtmo b6752ea535 Renamed 2021-06-21 11:42:05 +02:00
budtmo 06a8e83922 Updated base image 2021-06-21 11:40:22 +02:00
budtmo a7e7eaa5aa Added release pipelines 2021-06-21 11:39:10 +02:00
budtmo d2c82d05c7 Removed matrix from pipeline 2021-06-21 10:47:09 +02:00
budtmo 79d36e1536 Replaced status badge of Travis with Azure DevOps 2021-06-21 10:36:05 +02:00
budtmo 90ff1782ae Reverted the changes 2021-06-21 10:33:07 +02:00
budtmo 92e4933521 Published test result at the end 2021-06-21 10:25:54 +02:00
budtmo 4f9469db55 Added matrix 2021-06-21 10:24:06 +02:00
budtmo cc409b9914 Formatted 2021-06-21 10:18:02 +02:00
budtmo 4cc5a36c32 Added Azure DevOps 2021-06-21 10:13:15 +02:00
budtmo ed77303a16 Removed travis from the project 2021-06-21 10:11:34 +02:00
budtmo 5696fe3ea0 Deleted unused script 2021-06-21 09:54:57 +02:00
Budi UtomoandGitHub b39a8784b7 Merge pull request #287 from scottwallacesh/master
Fix an issue when attempting to detect an existing AVD image
2021-06-21 09:52:26 +02:00
Scott WallaceandGitHub fcb1f2ec31 Fix an issue when attempting to detect an existing AVD image
Fixes #286.
2021-05-05 10:04:46 +01:00
Budi UtomoandGitHub 49113f2cb4 Added PayPal link for donation 2021-04-28 15:00:12 +02:00
Budi UtomoandGitHub 0a8b7c07a2 Added step how to check kvm 2021-02-16 15:40:39 +01:00
butomo1989 49b9c44f3a Using Appium 1.20.2 2021-02-04 08:31:13 +01:00
butomo1989 15cddf08c4 Merge branch 'master' of github.com:butomo1989/docker-android 2021-02-03 16:55:06 +01:00
butomo1989 71949ee857 Using Appium 1.20.1 2021-02-03 16:54:51 +01:00
Budi UtomoandGitHub d0e3c619ca Merge pull request #277 from iqalab-cloud/bug-fix-incorrect-max-session
Bug fix: maxSession in appium config should be 1
2021-01-13 13:07:30 +01:00
Zhaopeng XUAN 8dc87a3a3c Bug fix: maxSession in appium config should be 1 2021-01-13 12:39:36 +01:00
Budi UtomoandGitHub 76617374c0 Merge pull request #274 from iqalab-cloud/feature-support-selenium-proxy-class
Feature: Support customised Selenium Proxy Class when use Appium
2021-01-09 11:21:30 +01:00
Zhaopeng XUAN 70fc3b411c Fix the issue 2021-01-08 12:05:34 +01:00
Zhaopeng XUAN 5e7ce8ce66 Feature: Support Selenium Proxy Class when use Appium 2021-01-08 11:44:56 +01:00
butomo1989 1d7121c41b Merge branch 'master' of github.com:butomo1989/docker-android 2021-01-08 08:34:25 +01:00
butomo1989 0a1758091f Updated base image 2021-01-08 08:34:06 +01:00
Budi UtomoandGitHub eb045aa644 Merge pull request #270 from jnvillar/patch-1
Update README_VMWARE.md
2021-01-07 10:42:00 +01:00
Juan Ignacio Noli VillarandGitHub e5a9fe7031 Update README_VMWARE.md 2020-12-17 10:49:08 -03:00
butomo1989 fdb464781a Added monitoring section 2020-09-02 11:33:07 +02:00
Budi UtomoandGitHub 2e5237ec80 Merge pull request #260 from yintro4ha/master
Able to add proxy user and password on Android emulator
2020-08-27 12:56:15 +02:00
yintro4haandGitHub b1f9ec5e79 Merge pull request #1 from yintro4ha/add-proxy-auth
Update utils.sh
2020-08-24 15:14:00 +08:00
yintro4haandGitHub 1ac4a6484e Update README_CUSTOM_CONFIG.md
Add document for new proxy auth variable
2020-08-24 15:10:03 +08:00
yintro4haandGitHub f09e38c92c Update utils.sh
Add Variable: 
1. HTTP_PROXY_USER
2. HTTP_PROXY_PASSWORD
2020-08-24 15:05:22 +08:00
16 changed files with 176 additions and 95 deletions
-30
View File
@@ -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)
+16 -4
View File
@@ -4,11 +4,12 @@
[![Analytics](https://ga-beacon.appspot.com/UA-133466903-1/github/budtmo/docker-android/README.md)](https://github.com/igrigorik/ga-beacon "Analytics")
[![Join the chat at https://gitter.im/budtmo/docker-android](https://badges.gitter.im/budtmo/docker-android.svg)](https://gitter.im/budtmo/docker-android?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/budtmo/docker-android.svg?branch=master)](https://travis-ci.org/budtmo/docker-android)
[![Build Status](https://dev.azure.com/budtmoos/budtmoos/_apis/build/status/budtmo.docker-android.test?branchName=master)](https://dev.azure.com/budtmoos/budtmoos/_build/latest?definitionId=7&branchName=master)
[![codecov](https://codecov.io/gh/budtmo/docker-android/branch/master/graph/badge.svg)](https://codecov.io/gh/budtmo/docker-android)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/3f000ffb97db45a59161814e1434c429)](https://www.codacy.com/app/butomo1989/docker-appium?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=butomo1989/docker-appium&amp;utm_campaign=Badge_Grade)
[![GitHub release](https://img.shields.io/github/release/budtmo/docker-android.svg)](https://github.com/budtmo/docker-android/releases)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fbudtmo%2Fdocker-android.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fbudtmo%2Fdocker-android?ref=badge_shield)
[![Paypal Donate](https://img.shields.io/badge/paypal-donate-blue.svg)](http://paypal.me/budtmo)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
Docker-Android is a docker image built to be used for everything related to mobile website testing and Android project.
@@ -81,7 +82,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 +100,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,7 +110,7 @@ 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
---------------------
@@ -251,6 +259,10 @@ Security
--------
All docker images are protected by [Polyverse](https://polyverse.io/) by scrambling the Linux packages. For more information please visit [this link](https://youtu.be/eSZNP42n-pM)
Monitoring
----------
You can use [cadvisor](https://github.com/google/cadvisor) combined with influxdb / prometheus and grafana if needed to monitor each running container.
Users
-----
Docker-Android are being used by 100+ countries around the world.
+1
View File
@@ -25,6 +25,7 @@ It is also possible to connect appium server that run inside docker-android with
- SELENIUM_HOST="\<host\_ip\_address>"
- SELENIUM_PORT=\<port\_number>
- SELENIUM_TIMEOUT=\<timeout\_in\_seconds>
- SELENIUM_PROXY_CLASS=\<selenium\_proxy\_class\_name>
To run tests for mobile browser, following parameter can be passed:
+9
View File
@@ -13,6 +13,15 @@ You can enable proxy inside container and Android emulator by passing following
- NO_PROXY="localhost"
- ENABLE_PROXY_ON_EMULATOR=true
Proxy with authentication
----
You can set proxy with authentication by passing following environment variable:
- HTTP_PROXY_USER="\<username>"
- HTTPS_PROXY_PASSWORD="\<password>"
Language
--------
+10 -1
View File
@@ -38,10 +38,19 @@ The following instructions are used for OS X. You'll need [docker-machine-parall
![Enable nested virtualization for Parallels Desktop](images/parallels_enable_nested_virtualization.png)
4. Enable kvm inside virtual machine
4.0 Check kvm version
```bash
# version
$ 10.1
```
Go to http://tinycorelinux.net/10.x/x86_64/tcz/ and check your kvm version, for version 10.1 is kvm-4.19.10-tinycore64.tcz
4.1. Run as an account other than root to install kvm packages using tce-load.
```bash
# su docker
$ tce-load -wi kvm
$ tce-load -wi kvm-4.19.10-tinycore64.tcz
```
4.2. Run as root to load kvm module after kvm packages install.
+1 -1
View File
@@ -1,4 +1,4 @@
FROM appium/appium:1.18.0-p0
FROM appium/appium:v1.21.0-p0
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
+1 -1
View File
@@ -1,4 +1,4 @@
FROM appium/appium:1.18.0-p0
FROM appium/appium:v1.21.0-p0
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
+1 -1
View File
@@ -1,4 +1,4 @@
FROM appium/appium:1.18.0-p0
FROM appium/appium:v1.21.0-p0
LABEL maintainer "Budi Utomo <budtmo.os@gmail.com>"
+53
View File
@@ -0,0 +1,53 @@
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'
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'
+29
View File
@@ -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'
-29
View File
@@ -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
+6 -4
View File
@@ -149,9 +149,10 @@ def appium_run(avd_name: str):
selenium_host = os.getenv('SELENIUM_HOST', '172.17.0.1')
selenium_port = int(os.getenv('SELENIUM_PORT', 4444))
selenium_timeout = int(os.getenv('SELENIUM_TIMEOUT', 30))
selenium_proxy_class = os.getenv('SELENIUM_PROXY_CLASS', 'org.openqa.grid.selenium.proxy.DefaultRemoteProxy')
browser_name = default_web_browser if mobile_web_test else 'android'
create_node_config(avd_name, browser_name, appium_host, appium_port, selenium_host, selenium_port,
selenium_timeout)
selenium_timeout, selenium_proxy_class)
cmd += ' --nodeconfig {file}'.format(file=CONFIG_FILE)
except ValueError as v_err:
logger.error(v_err)
@@ -160,7 +161,7 @@ def appium_run(avd_name: str):
def create_node_config(avd_name: str, browser_name: str, appium_host: str, appium_port: int, selenium_host: str,
selenium_port: int, selenium_timeout: int):
selenium_port: int, selenium_timeout: int, selenium_proxy_class: str):
"""
Create custom node config file in json format to be able to connect with selenium server.
@@ -170,6 +171,7 @@ def create_node_config(avd_name: str, browser_name: str, appium_host: str, appiu
:param selenium_host: Host where selenium server is running
:param selenium_port: Port number where selenium server is running
:param selenium_timeout: Selenium session timeout in seconds
:param selenium_proxy_class: Selenium Proxy class created in Selenium hub
"""
config = {
'capabilities': [
@@ -185,11 +187,11 @@ def create_node_config(avd_name: str, browser_name: str, appium_host: str, appiu
'configuration': {
'cleanUpCycle': 2000,
'timeout': selenium_timeout,
'proxy': 'org.openqa.grid.selenium.proxy.DefaultRemoteProxy',
'proxy': selenium_proxy_class,
'url': 'http://{host}:{port}/wd/hub'.format(host=appium_host, port=appium_port),
'host': appium_host,
'port': appium_port,
'maxSession': 6,
'maxSession': 1,
'register': True,
'registerCycle': 5000,
'hubHost': selenium_host,
+2 -1
View File
@@ -58,7 +58,8 @@ class TestAppium(TestCase):
def test_config_creation(self):
from src import CONFIG_FILE
self.assertFalse(os.path.exists(CONFIG_FILE))
app.create_node_config('test', 'android', '127.0.0.1', 4723, '127.0.0.1', 4444, 30)
app.create_node_config('test', 'android', '127.0.0.1', 4723, '127.0.0.1', 4444, 30,
'org.openqa.grid.selenium.proxy.DefaultRemoteProxy')
self.assertTrue(os.path.exists(CONFIG_FILE))
os.remove(CONFIG_FILE)
+10 -1
View File
@@ -52,7 +52,16 @@ function enable_proxy_if_needed () {
adb shell "content update --uri content://telephony/carriers --bind proxy:s:"0.0.0.0" --bind port:s:"0000" --where "mcc=310" --where "mnc=260""
sleep 5
adb shell "content update --uri content://telephony/carriers --bind proxy:s:"${p[0]}" --bind port:s:"${p[1]}" --where "mcc=310" --where "mnc=260""
if [ ! -z "${HTTP_PROXY_USER}" ]; then
sleep 2
adb shell "content update --uri content://telephony/carriers --bind user:s:"${HTTP_PROXY_USER}" --where "mcc=310" --where "mnc=260""
fi
if [ ! -z "${HTTP_PROXY_PASSWORD}" ]; then
sleep 2
adb shell "content update --uri content://telephony/carriers --bind password:s:"${HTTP_PROXY_PASSWORD}" --where "mcc=310" --where "mnc=260""
fi
adb unroot
# Mobile data need to be restarted for Android 10 or higher
-22
View File
@@ -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