diff options
author | Ben Wagner <benjaminwagner@google.com> | 2018-01-04 11:29:15 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-04 17:16:23 +0000 |
commit | f990ebc272c5342a0a83bf6aea3f6cd0cf2aa149 (patch) | |
tree | 765dc8867c46b4174f616d19c8b0eff71635429d | |
parent | 6cc7bbc0582acffe93bdb2ab9a215c443033fb86 (diff) |
Only uninstall if install failed.
This is a followup to https://skia-review.googlesource.com/c/skia/+/90343,
which causes task durations to increase due to copying over images, skps,
etc. on every run.
Bug: skia:7408
Change-Id: I42e829e287b7343e969159ac19c587a87ebe99e8
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/90942
Reviewed-by: Stephan Altmueller <stephana@google.com>
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
7 files changed, 826 insertions, 109 deletions
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Debug-All.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Debug-All.json index f8f5cdd604..f30c8c2da8 100644 --- a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Debug-All.json +++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Debug-All.json @@ -135,21 +135,6 @@ { "cmd": [ "ideviceinstaller", - "-U", - "com.google.dm" - ], - "env": { - "BUILDTYPE": "Debug", - "CHROME_HEADLESS": "1", - "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", - "SKIA_OUT": "[START_DIR]/out" - }, - "infra_step": true, - "name": "uninstall_dm" - }, - { - "cmd": [ - "ideviceinstaller", "-i", "[START_DIR]/out/Debug/dm.app" ], @@ -165,21 +150,6 @@ { "cmd": [ "ideviceinstaller", - "-U", - "com.google.nanobench" - ], - "env": { - "BUILDTYPE": "Debug", - "CHROME_HEADLESS": "1", - "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", - "SKIA_OUT": "[START_DIR]/out" - }, - "infra_step": true, - "name": "uninstall_nanobench" - }, - { - "cmd": [ - "ideviceinstaller", "-i", "[START_DIR]/out/Debug/nanobench.app" ], diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/retry_ios_install.json b/infra/bots/recipe_modules/flavor/examples/full.expected/retry_ios_install.json new file mode 100644 index 0000000000..4840840995 --- /dev/null +++ b/infra/bots/recipe_modules/flavor/examples/full.expected/retry_ios_install.json @@ -0,0 +1,595 @@ +[ + { + "cmd": [ + "python", + "-u", + "[START_DIR]/skia/bin/fetch-gn" + ], + "cwd": "[START_DIR]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "fetch-gn" + }, + { + "cmd": [ + "[START_DIR]/skia/bin/gn", + "gen", + "[START_DIR]/out/Release", + "--args=cc=\"clang\" cxx=\"clang++\" is_debug=false" + ], + "cwd": "[START_DIR]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "name": "gn gen" + }, + { + "cmd": [ + "ninja", + "-k", + "0", + "-C", + "[START_DIR]/out/Release" + ], + "cwd": "[START_DIR]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "name": "ninja" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_push_file", + "file.txt", + "file.txt" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "push_file file.txt" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "rmtree", + "results_dir" + ], + "infra_step": true, + "name": "rmtree results_dir" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "ensure-directory", + "--mode", + "0777", + "results_dir" + ], + "infra_step": true, + "name": "makedirs results_dir" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_rm", + "device_results_dir" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "rm device_results_dir" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_mkdir", + "device_results_dir" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "mkdir device_results_dir" + }, + { + "cmd": [ + "ios.py" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "setup_device" + }, + { + "cmd": [ + "ideviceinstaller", + "-i", + "[START_DIR]/out/Release/dm.app" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "install_dm", + "~followup_annotations": [ + "step returned non-zero exit code: 1", + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "cmd": [ + "ideviceinstaller", + "-U", + "com.google.dm" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "uninstall_dm" + }, + { + "cmd": [ + "ideviceinstaller", + "-i", + "[START_DIR]/out/Release/dm.app" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "install_dm (attempt 2)" + }, + { + "cmd": [ + "ideviceinstaller", + "-i", + "[START_DIR]/out/Release/nanobench.app" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "install_nanobench" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_push_if_needed", + "[START_DIR]/skia/resources", + "resources" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "push_if_needed [START_DIR]/skia/resources" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "copy", + "[START_DIR]/skia/infra/bots/assets/skp/VERSION", + "/path/to/tmp/" + ], + "infra_step": true, + "name": "Get downloaded SKP VERSION" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "copy", + "42", + "[START_DIR]/tmp/SKP_VERSION" + ], + "infra_step": true, + "name": "write SKP_VERSION" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_cat_file", + "tmp/SKP_VERSION" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "cat_file tmp/SKP_VERSION", + "stdout": "/path/to/tmp/" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_rm", + "tmp/SKP_VERSION" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "rm tmp/SKP_VERSION" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_rm", + "skps" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "rm skps" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_mkdir", + "skps" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "mkdir skps" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_push_if_needed", + "[START_DIR]/skp", + "skps" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "push_if_needed [START_DIR]/skp" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_push_file", + "[START_DIR]/tmp/SKP_VERSION", + "tmp/SKP_VERSION" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "push_file [START_DIR]/tmp/SKP_VERSION" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "copy", + "[START_DIR]/skia/infra/bots/assets/skimage/VERSION", + "/path/to/tmp/" + ], + "infra_step": true, + "name": "Get downloaded skimage VERSION" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "copy", + "42", + "[START_DIR]/tmp/SK_IMAGE_VERSION" + ], + "infra_step": true, + "name": "write SK_IMAGE_VERSION" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_cat_file", + "tmp/SK_IMAGE_VERSION" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "cat_file tmp/SK_IMAGE_VERSION", + "stdout": "/path/to/tmp/" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_rm", + "tmp/SK_IMAGE_VERSION" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "rm tmp/SK_IMAGE_VERSION" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_rm", + "images" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "rm images" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_mkdir", + "images" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "mkdir images" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_push_if_needed", + "[START_DIR]/skimage", + "images" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "push_if_needed [START_DIR]/skimage" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_push_file", + "[START_DIR]/tmp/SK_IMAGE_VERSION", + "tmp/SK_IMAGE_VERSION" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "push_file [START_DIR]/tmp/SK_IMAGE_VERSION" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "copy", + "[START_DIR]/skia/infra/bots/assets/svg/VERSION", + "/path/to/tmp/" + ], + "infra_step": true, + "name": "Get downloaded SVG VERSION" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "copy", + "42", + "[START_DIR]/tmp/SVG_VERSION" + ], + "infra_step": true, + "name": "write SVG_VERSION" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_cat_file", + "tmp/SVG_VERSION" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "cat_file tmp/SVG_VERSION", + "stdout": "/path/to/tmp/" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_rm", + "tmp/SVG_VERSION" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "rm tmp/SVG_VERSION" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_rm", + "svgs" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "rm svgs" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_mkdir", + "svgs" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "mkdir svgs" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_push_if_needed", + "[START_DIR]/svg", + "svgs" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "push_if_needed [START_DIR]/svg" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_push_file", + "[START_DIR]/tmp/SVG_VERSION", + "tmp/SVG_VERSION" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "push_file [START_DIR]/tmp/SVG_VERSION" + }, + { + "cmd": [ + "idevice-app-runner", + "-s", + "com.google.dm", + "--args", + "--some-flag" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "name": "dm" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_pull_if_needed", + "dm", + "[CUSTOM_[SWARM_OUT_DIR]]/dm" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "pull_if_needed dm" + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +]
\ No newline at end of file diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/retry_ios_install_retries_exhausted.json b/infra/bots/recipe_modules/flavor/examples/full.expected/retry_ios_install_retries_exhausted.json new file mode 100644 index 0000000000..d8e912d9bc --- /dev/null +++ b/infra/bots/recipe_modules/flavor/examples/full.expected/retry_ios_install_retries_exhausted.json @@ -0,0 +1,194 @@ +[ + { + "cmd": [ + "python", + "-u", + "[START_DIR]/skia/bin/fetch-gn" + ], + "cwd": "[START_DIR]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "fetch-gn" + }, + { + "cmd": [ + "[START_DIR]/skia/bin/gn", + "gen", + "[START_DIR]/out/Release", + "--args=cc=\"clang\" cxx=\"clang++\" is_debug=false" + ], + "cwd": "[START_DIR]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "name": "gn gen" + }, + { + "cmd": [ + "ninja", + "-k", + "0", + "-C", + "[START_DIR]/out/Release" + ], + "cwd": "[START_DIR]/skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "name": "ninja" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_push_file", + "file.txt", + "file.txt" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "push_file file.txt" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "rmtree", + "results_dir" + ], + "infra_step": true, + "name": "rmtree results_dir" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "ensure-directory", + "--mode", + "0777", + "results_dir" + ], + "infra_step": true, + "name": "makedirs results_dir" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_rm", + "device_results_dir" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "rm device_results_dir" + }, + { + "cmd": [ + "[START_DIR]/skia/platform_tools/ios/bin/ios_mkdir", + "device_results_dir" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "mkdir device_results_dir" + }, + { + "cmd": [ + "ios.py" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "setup_device" + }, + { + "cmd": [ + "ideviceinstaller", + "-i", + "[START_DIR]/out/Release/dm.app" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "install_dm", + "~followup_annotations": [ + "step returned non-zero exit code: 1", + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "cmd": [ + "ideviceinstaller", + "-U", + "com.google.dm" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "uninstall_dm" + }, + { + "cmd": [ + "ideviceinstaller", + "-i", + "[START_DIR]/out/Release/dm.app" + ], + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[START_DIR]/out" + }, + "infra_step": true, + "name": "install_dm (attempt 2)", + "~followup_annotations": [ + "step returned non-zero exit code: 1", + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "name": "$result", + "reason": "Infra Failure: Step('install_dm (attempt 2)') returned 1", + "recipe_result": null, + "status_code": 1 + } +]
\ No newline at end of file diff --git a/infra/bots/recipe_modules/flavor/examples/full.py b/infra/bots/recipe_modules/flavor/examples/full.py index 5f38a437a6..bed486f18f 100644 --- a/infra/bots/recipe_modules/flavor/examples/full.py +++ b/infra/bots/recipe_modules/flavor/examples/full.py @@ -200,3 +200,26 @@ def GenTests(api): swarm_out_dir='[SWARM_OUT_DIR]') + api.step_data('Scale CPU 0 to 0.600000', retcode=1) ) + + builder = 'Test-iOS-Clang-iPhone7-GPU-GT7600-arm64-Release-All' + fail_step_name = 'install_dm' + yield ( + api.test('retry_ios_install') + + api.properties(buildername=builder, + repository='https://skia.googlesource.com/skia.git', + revision='abc123', + path_config='kitchen', + swarm_out_dir='[SWARM_OUT_DIR]') + + api.step_data(fail_step_name, retcode=1) + ) + + yield ( + api.test('retry_ios_install_retries_exhausted') + + api.properties(buildername=builder, + repository='https://skia.googlesource.com/skia.git', + revision='abc123', + path_config='kitchen', + swarm_out_dir='[SWARM_OUT_DIR]') + + api.step_data(fail_step_name, retcode=1) + + api.step_data(fail_step_name + ' (attempt 2)', retcode=1) + ) diff --git a/infra/bots/recipe_modules/flavor/ios_flavor.py b/infra/bots/recipe_modules/flavor/ios_flavor.py index 29f147c3c8..fb4b8a8adb 100644 --- a/infra/bots/recipe_modules/flavor/ios_flavor.py +++ b/infra/bots/recipe_modules/flavor/ios_flavor.py @@ -20,17 +20,20 @@ class iOSFlavorUtils(gn_flavor.GNFlavorUtils): app_package = self.m.vars.skia_out.join(self.m.vars.configuration, '%s.app' % app_name) - # If app ID changes, upgrade will fail, so uninstall first. - self.m.run(self.m.step, - 'uninstall_' + app_name, - cmd=['ideviceinstaller', '-U', 'com.google.%s' % app_name], - infra_step=True, - # App may not be installed. - abort_on_failure=False, fail_build_on_failure=False) - self.m.run(self.m.step, - 'install_' + app_name, - cmd=['ideviceinstaller', '-i', app_package], - infra_step=True) + def uninstall_app(attempt): + # If app ID changes, upgrade will fail, so try uninstalling. + self.m.run(self.m.step, + 'uninstall_' + app_name, + cmd=['ideviceinstaller', '-U', 'com.google.%s' % app_name], + infra_step=True, + # App may not be installed. + abort_on_failure=False, fail_build_on_failure=False) + + num_attempts = 2 + self.m.run.with_retry(self.m.step, 'install_' + app_name, num_attempts, + cmd=['ideviceinstaller', '-i', app_package], + between_attempts_fn=uninstall_app, + infra_step=True) self.device_dirs = default_flavor.DeviceDirs( dm_dir='dm', diff --git a/infra/bots/recipes/perf.expected/Perf-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All.json b/infra/bots/recipes/perf.expected/Perf-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All.json index 5598557e49..bbd6699542 100644 --- a/infra/bots/recipes/perf.expected/Perf-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All.json +++ b/infra/bots/recipes/perf.expected/Perf-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All.json @@ -17,23 +17,6 @@ { "cmd": [ "ideviceinstaller", - "-U", - "com.google.dm" - ], - "env": { - "BUILDTYPE": "Release", - "CHROME_HEADLESS": "1", - "IOS_BUNDLE_ID": "com.google.nanobench", - "IOS_MOUNT_POINT": "[START_DIR]/mnt_iosdevice", - "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", - "SKIA_OUT": "[START_DIR]/out" - }, - "infra_step": true, - "name": "uninstall_dm" - }, - { - "cmd": [ - "ideviceinstaller", "-i", "[START_DIR]/out/Release/dm.app" ], @@ -51,23 +34,6 @@ { "cmd": [ "ideviceinstaller", - "-U", - "com.google.nanobench" - ], - "env": { - "BUILDTYPE": "Release", - "CHROME_HEADLESS": "1", - "IOS_BUNDLE_ID": "com.google.nanobench", - "IOS_MOUNT_POINT": "[START_DIR]/mnt_iosdevice", - "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", - "SKIA_OUT": "[START_DIR]/out" - }, - "infra_step": true, - "name": "uninstall_nanobench" - }, - { - "cmd": [ - "ideviceinstaller", "-i", "[START_DIR]/out/Release/nanobench.app" ], diff --git a/infra/bots/recipes/test.expected/Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All.json b/infra/bots/recipes/test.expected/Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All.json index 1a97c9f7a1..9d0dde5547 100644 --- a/infra/bots/recipes/test.expected/Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All.json +++ b/infra/bots/recipes/test.expected/Test-iOS-Clang-iPadPro-GPU-GT7800-arm64-Release-All.json @@ -17,23 +17,6 @@ { "cmd": [ "ideviceinstaller", - "-U", - "com.google.dm" - ], - "env": { - "BUILDTYPE": "Release", - "CHROME_HEADLESS": "1", - "IOS_BUNDLE_ID": "com.google.dm", - "IOS_MOUNT_POINT": "[START_DIR]/mnt_iosdevice", - "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", - "SKIA_OUT": "[START_DIR]/out" - }, - "infra_step": true, - "name": "uninstall_dm" - }, - { - "cmd": [ - "ideviceinstaller", "-i", "[START_DIR]/out/Release/dm.app" ], @@ -51,23 +34,6 @@ { "cmd": [ "ideviceinstaller", - "-U", - "com.google.nanobench" - ], - "env": { - "BUILDTYPE": "Release", - "CHROME_HEADLESS": "1", - "IOS_BUNDLE_ID": "com.google.dm", - "IOS_MOUNT_POINT": "[START_DIR]/mnt_iosdevice", - "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]", - "SKIA_OUT": "[START_DIR]/out" - }, - "infra_step": true, - "name": "uninstall_nanobench" - }, - { - "cmd": [ - "ideviceinstaller", "-i", "[START_DIR]/out/Release/nanobench.app" ], |