fastlane-plugin-mango 1.3.23 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +19 -12
- data/lib/fastlane/plugin/mango/actions/run_dockerized_task_action.rb +7 -0
- data/lib/fastlane/plugin/mango/helper/docker_commander.rb +8 -0
- data/lib/fastlane/plugin/mango/helper/emulator_language.rb +30 -0
- data/lib/fastlane/plugin/mango/helper/mango_helper.rb +1 -1
- data/lib/fastlane/plugin/mango/helper/settings.apk +0 -0
- data/lib/fastlane/plugin/mango/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d0630bacbd9e12bef129c250ba6c97b6feae538c137484e0da99bfd383d1fd8
|
4
|
+
data.tar.gz: 3709bd848bfb4a787d9913f31f4e31a8e87c71f3d5d695c7ba7ae44de9f205e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8841f8d082ec685bc41ff3bd2e2f277e1a91ce43040c903d2bc20959f573b7e86a6946d5e64f07c1f7e6d274d3ea704ee9a65689d55cdb890f6f2c68c7f69418
|
7
|
+
data.tar.gz: 61e8e0b4125beb580fbdd5f23e1bb89fa460b140df2b830ef11a4e5444ac0306af112c3c9091458f2bc8877dcb6d85568bd70cf36400e7f4c2369b605eca4c97
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
[](https://rubygems.org/gems/fastlane-plugin-mango) [](https://github.com/xing/mango/blob/master/LICENSE)
|
5
5
|
[](http://rubygems.org/gems/fastlane-plugin-mango)
|
6
6
|
|
7
|
-
A fastlane plugin that runs Android tasks on a specified [Docker](https://www.docker.com/) image
|
7
|
+
A fastlane plugin that runs Android tasks on a specified [Docker](https://www.docker.com/) image. Can be used for orchestrating android tasks on a CI system.
|
8
8
|
|
9
9
|
<img src="assets/mango_logo.png" alt="Mango Logo" width="256px" height="256px"/>
|
10
10
|
|
@@ -47,19 +47,26 @@ desc "Run espresso tests on docker images"
|
|
47
47
|
end
|
48
48
|
```
|
49
49
|
|
50
|
-
or to this for unit tests or other gradle tasks:
|
50
|
+
or to this for unit tests or other gradle tasks(some of the variables are optional):
|
51
51
|
```ruby
|
52
52
|
desc "Run unit tests on docker images"
|
53
|
-
lane :
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
53
|
+
lane :example do
|
54
|
+
run_dockerized_task(
|
55
|
+
container_name: "emulator_#{options[:port_factor]}",
|
56
|
+
port_factor: options[:port_factor],
|
57
|
+
docker_image: 'joesss/mango-base:latest',
|
58
|
+
android_task: './gradlew testDebug',
|
59
|
+
post_actions: 'adb logcat -d > logcat.txt',
|
60
|
+
bundle_install: true,
|
61
|
+
core_amount: '8',
|
62
|
+
workspace_dir: '/root/tests/espresso-tests',
|
63
|
+
docker_registry_login: "docker login -u='USER' -p='PASS' some.docker.com",
|
64
|
+
pull_latest_image: true,
|
65
|
+
pre_action: 'echo $GIT_BRANCH > /root/.branch',
|
66
|
+
vnc_enabled: false,
|
67
|
+
environment_variables: options[:environment_variables] ? options[:environment_variables].split(' ') : ''
|
68
|
+
)
|
69
|
+
end
|
63
70
|
```
|
64
71
|
|
65
72
|
Now you can call this new lane by calling `bundle exec fastlane Espresso_Tests`.
|
@@ -11,6 +11,7 @@ module Fastlane
|
|
11
11
|
mango_helper.setup_container
|
12
12
|
|
13
13
|
docker_commander = Helper::DockerCommander.new(mango_helper.container_name)
|
14
|
+
Helper::EmulatorLanguage.set(params[:emulator_language], docker_commander) if params[:emulator_language]
|
14
15
|
|
15
16
|
failure_buffer_timeout = 5
|
16
17
|
timeout_command = "timeout #{params[:maximal_run_time] - failure_buffer_timeout}m"
|
@@ -202,6 +203,12 @@ module Fastlane
|
|
202
203
|
description: 'A bool. True for vnc_enabled False for vnc_disabled',
|
203
204
|
type: Boolean,
|
204
205
|
default_value: true,
|
206
|
+
optional: true),
|
207
|
+
|
208
|
+
FastlaneCore::ConfigItem.new(key: :emulator_language,
|
209
|
+
env_name: 'EMULATOR_LANGUAGE',
|
210
|
+
description: 'A string that identify a device locale (e.g. de_DE)',
|
211
|
+
type: String,
|
205
212
|
optional: true)
|
206
213
|
]
|
207
214
|
end
|
@@ -43,6 +43,10 @@ module Fastlane
|
|
43
43
|
|
44
44
|
def delete_container
|
45
45
|
Actions.sh("docker rm -f #{container_name}") if container_name
|
46
|
+
rescue StandardError
|
47
|
+
sleep 5
|
48
|
+
UI.important('Was not able to delete the container after the first attempt, trying again')
|
49
|
+
retry
|
46
50
|
end
|
47
51
|
|
48
52
|
def disconnect_network_bridge
|
@@ -64,6 +68,10 @@ module Fastlane
|
|
64
68
|
end
|
65
69
|
end
|
66
70
|
|
71
|
+
def cp(file:)
|
72
|
+
Actions.sh("docker cp #{file} #{container_name}:/root/tests/.")
|
73
|
+
end
|
74
|
+
|
67
75
|
def prune
|
68
76
|
Action.sh('docker system prune -f')
|
69
77
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'timeout'
|
2
|
+
|
3
|
+
module Fastlane
|
4
|
+
module Helper
|
5
|
+
module EmulatorLanguage
|
6
|
+
def self.set(lang, docker_commander)
|
7
|
+
UI.important("Changing device locale to #{lang}")
|
8
|
+
|
9
|
+
retries ||= 5
|
10
|
+
language = lang.split('_')[0]
|
11
|
+
country = lang.split('_')[1]
|
12
|
+
apk_path = File.join(File.dirname(__FILE__), 'settings.apk')
|
13
|
+
docker_commander.cp(file: apk_path)
|
14
|
+
|
15
|
+
Timeout.timeout(20) do
|
16
|
+
docker_commander.exec(command: 'adb install /root/tests/settings.apk')
|
17
|
+
docker_commander.exec(command: 'adb shell pm grant io.appium.settings android.permission.CHANGE_CONFIGURATION')
|
18
|
+
docker_commander.exec(command: "adb shell am broadcast -a io.appium.settings.locale -n io.appium.settings/.receivers.LocaleSettingReceiver --es lang #{language} --es country #{country}")
|
19
|
+
end
|
20
|
+
rescue StandardError => e
|
21
|
+
raise e if retries.zero?
|
22
|
+
|
23
|
+
puts "Got an exception: #{e.message}. Will retry in 5 seconds"
|
24
|
+
retries -= 1
|
25
|
+
sleep 5
|
26
|
+
retry
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -210,7 +210,7 @@ module Fastlane
|
|
210
210
|
all_containers = Docker::Container.all(all: true)
|
211
211
|
|
212
212
|
all_containers.each do |container|
|
213
|
-
if container.info['Names'].first[1
|
213
|
+
if container.info['Names'].first[1..-1] == container_name
|
214
214
|
@container = container
|
215
215
|
return true
|
216
216
|
end
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-mango
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Serghei Moret, Daniel Hartwich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docker-api
|
@@ -149,7 +149,9 @@ files:
|
|
149
149
|
- lib/fastlane/plugin/mango/helper/cpu_load_handler.rb
|
150
150
|
- lib/fastlane/plugin/mango/helper/docker_commander.rb
|
151
151
|
- lib/fastlane/plugin/mango/helper/emulator_commander.rb
|
152
|
+
- lib/fastlane/plugin/mango/helper/emulator_language.rb
|
152
153
|
- lib/fastlane/plugin/mango/helper/mango_helper.rb
|
154
|
+
- lib/fastlane/plugin/mango/helper/settings.apk
|
153
155
|
- lib/fastlane/plugin/mango/version.rb
|
154
156
|
homepage: https://github.com/xing/mango
|
155
157
|
licenses:
|
@@ -170,8 +172,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
172
|
- !ruby/object:Gem::Version
|
171
173
|
version: '0'
|
172
174
|
requirements: []
|
173
|
-
rubygems_version: 3.
|
175
|
+
rubygems_version: 3.2.32
|
174
176
|
signing_key:
|
175
177
|
specification_version: 4
|
176
|
-
summary: This plugin Android tasks on docker images
|
178
|
+
summary: This plugin orchtestrates Android tasks on docker images
|
177
179
|
test_files: []
|