Reland "Support recovering macOS bots from unsynced ios debug symbols" This is a reland of commit 9f8c1b9d63be482163379e3c53e62568d7154661 with 4 total retries, each time increasing the timeout duration (the last retry lasting 16 minutes). Original change's description: > Support recovering macOS bots from unsynced ios debug symbols > > A LED run that actually recovered bot flutter-devicelab-mac-2 https://luci-milo.appspot.com/raw/build/logs.chromium.org/flutter/led/fujino_google.com/11662c93a361a4f7d9cd41e7531d0f635612080296d6caf1a4125507fc5d34d6/+/build.proto > > Bug: https://github.com/flutter/flutter/issues/103511 > Change-Id: Ic89b27e25b5267f2c85a47641d7dbb1dc52b5c34 > Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/31281 > Commit-Queue: Christopher Fujino <fujino@google.com> > Reviewed-by: Keyong Han <keyonghan@google.com> > Reviewed-by: Yusuf Mohsinally <mohsinally@google.com> Bug: https://github.com/flutter/flutter/issues/103511 Change-Id: I330f12fcfdffb1dac959be1e8a58af6daece5961 Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/31420 Reviewed-by: Keyong Han <keyonghan@google.com> Commit-Queue: Christopher Fujino <fujino@google.com>
diff --git a/recipe_modules/os_utils/__init__.py b/recipe_modules/os_utils/__init__.py index 579d2b0..5adc711 100644 --- a/recipe_modules/os_utils/__init__.py +++ b/recipe_modules/os_utils/__init__.py
@@ -6,6 +6,7 @@ 'recipe_engine/file', 'recipe_engine/path', 'recipe_engine/platform', + 'recipe_engine/properties', 'recipe_engine/raw_io', 'recipe_engine/step', 'recipe_engine/swarming',
diff --git a/recipe_modules/os_utils/api.py b/recipe_modules/os_utils/api.py index f5daac7..765d39a 100644 --- a/recipe_modules/os_utils/api.py +++ b/recipe_modules/os_utils/api.py
@@ -8,6 +8,7 @@ from PB.go.chromium.org.luci.buildbucket.proto import common as common_pb2 +TIMEOUT_PROPERTY = 'ios_debug_symbol_doctor_timeout_seconds' class OsUtilsApi(recipe_api.RecipeApi): """Operating system utilities.""" @@ -230,6 +231,53 @@ ['powershell.exe', resource_name], ) + def ios_debug_symbol_doctor(self): + """Call the ios_debug_symbol_doctor entrypoint of the Device Doctor.""" + if str(self.m.swarming.bot_id + ).startswith('flutter-devicelab') and self.m.platform.is_mac: + with self.m.step.nest('ios_debug_symbol_doctor'): + cocoon_path = self._checkout_cocoon() + entrypoint = cocoon_path.join( + 'device_doctor', + 'bin', + 'ios_debug_symbol_doctor.dart', + ) + # This is not set by the builder config, but can be provided via LED + timeout = self.m.properties.get( + TIMEOUT_PROPERTY, + 120, # 2 minutes + ) + # Since we double the timeout on each retry, the last retry will have a + # timeout of 16 minutes + retry_count = 4 + with self.m.context(cwd=cocoon_path.join('device_doctor'), + infra_steps=True): + self.m.step( + 'pub get device_doctor', + ['dart', 'pub', 'get'], + ) + for _ in range(retry_count): + result = self._diagnose_and_recover_debug_symbols(entrypoint, timeout, cocoon_path) + # No errors in attached phones + if result: + return + # Try for twice as long next time + timeout *= 2 + message = ''' +The ios_debug_symbol_doctor is detecting phones attached with errors and failed +to recover this bot with a timeout of %s seconds. + +See https://github.com/flutter/flutter/issues/103511 for more context. +''' % timeout + # raise purple + self.m.step.empty( + 'Recovery failed after %s attempts' % retry_count, + status=self.m.step.INFRA_FAILURE, + step_text=message, + ) + + + def dismiss_dialogs(self): """Dismisses iOS dialogs to avoid problems. @@ -239,10 +287,7 @@ if str(self.m.swarming.bot_id ).startswith('flutter-devicelab') and self.m.platform.is_mac: with self.m.step.nest('Dismiss dialogs'): - cocoon_path = self.m.path['cache'].join('cocoon') - self.m.repo_util.checkout( - 'cocoon', cocoon_path, ref='refs/heads/main' - ) + cocoon_path = self._checkout_cocoon() resource_name = self.resource('dismiss_dialogs.sh') self.m.step( 'Set execute permission', @@ -259,3 +304,42 @@ ).stdout.rstrip() cmd = [resource_name, device_id] self.m.step('Run app to dismiss dialogs', cmd) + + def _checkout_cocoon(self): + """Checkout cocoon at HEAD to the cache and return the path.""" + cocoon_path = self.m.path['cache'].join('cocoon') + self.m.repo_util.checkout( + 'cocoon', cocoon_path, ref='refs/heads/main' + ) + return cocoon_path + + def _diagnose_and_recover_debug_symbols(self, entrypoint, timeout, cocoon_path): + """Diagnose if attached phones have errors with debug symbols. + + If there are errors, a recovery will be attempted. This function is intended + to be called in a retry loop until it returns True, or until a max retry + count is reached. + + Returns a boolean for whether or not the initial diagnose succeeded. + """ + try: + self.m.step( + 'diagnose', + ['dart', entrypoint, 'diagnose'], + ) + return True + except self.m.step.StepFailure as e: + self.m.step( + 'recover with %s second timeout' % timeout, + [ + 'dart', + entrypoint, + 'recover', + '--cocoon-root', + cocoon_path, + '--timeout', + timeout, + ], + ) + return False +
diff --git a/recipe_modules/os_utils/examples/full.expected/clean_derived_data.json b/recipe_modules/os_utils/examples/full.expected/clean_derived_data.json index 7acf15d..c1d7bc9 100644 --- a/recipe_modules/os_utils/examples/full.expected/clean_derived_data.json +++ b/recipe_modules/os_utils/examples/full.expected/clean_derived_data.json
@@ -1,6 +1,150 @@ [ { "cmd": [], + "name": "ios_debug_symbol_doctor" + }, + { + "cmd": [], + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "python3", + "-u", + "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py", + "--path", + "[CACHE]/cocoon", + "--url", + "https://flutter.googlesource.com/mirrors/cocoon" + ], + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git setup", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "fetch", + "origin", + "main", + "--recurse-submodules", + "--progress", + "--tags" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "PATH": "RECIPE_REPO[depot_tools]:<PATH>" + }, + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git fetch", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "checkout", + "-f", + "FETCH_HEAD" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git checkout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "rev-parse", + "HEAD" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.read revision", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@", + "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@" + ] + }, + { + "cmd": [ + "git", + "clean", + "-f", + "-d", + "-x" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git clean", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "sync" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.submodule sync", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "update", + "--init", + "--recursive" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.submodule update", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "dart", + "pub", + "get" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.pub get device_doctor", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "diagnose" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.diagnose", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [], "name": "Killing Processes" }, {
diff --git a/recipe_modules/os_utils/examples/full.expected/ios_debug_symbol_doctor_fails_four_times.json b/recipe_modules/os_utils/examples/full.expected/ios_debug_symbol_doctor_fails_four_times.json new file mode 100644 index 0000000..7147cc0 --- /dev/null +++ b/recipe_modules/os_utils/examples/full.expected/ios_debug_symbol_doctor_fails_four_times.json
@@ -0,0 +1,275 @@ +[ + { + "cmd": [], + "name": "ios_debug_symbol_doctor", + "~followup_annotations": [ + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "cmd": [], + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "python3", + "-u", + "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py", + "--path", + "[CACHE]/cocoon", + "--url", + "https://flutter.googlesource.com/mirrors/cocoon" + ], + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git setup", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "fetch", + "origin", + "main", + "--recurse-submodules", + "--progress", + "--tags" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "PATH": "RECIPE_REPO[depot_tools]:<PATH>" + }, + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git fetch", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "checkout", + "-f", + "FETCH_HEAD" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git checkout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "rev-parse", + "HEAD" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.read revision", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@", + "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@" + ] + }, + { + "cmd": [ + "git", + "clean", + "-f", + "-d", + "-x" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git clean", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "sync" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.submodule sync", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "update", + "--init", + "--recursive" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.submodule update", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "dart", + "pub", + "get" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.pub get device_doctor", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "diagnose" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.diagnose", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "recover", + "--cocoon-root", + "[CACHE]/cocoon", + "--timeout", + "120" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.recover with 120 second timeout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "diagnose" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.diagnose (2)", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "recover", + "--cocoon-root", + "[CACHE]/cocoon", + "--timeout", + "240" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.recover with 240 second timeout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "diagnose" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.diagnose (3)", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "recover", + "--cocoon-root", + "[CACHE]/cocoon", + "--timeout", + "480" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.recover with 480 second timeout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "diagnose" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.diagnose (4)", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "recover", + "--cocoon-root", + "[CACHE]/cocoon", + "--timeout", + "960" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.recover with 960 second timeout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [], + "name": "ios_debug_symbol_doctor.Recovery failed after 4 attempts", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_TEXT@<br/>The ios_debug_symbol_doctor is detecting phones attached with errors and failed<br/>to recover this bot with a timeout of 1920 seconds.<br/><br/>See https://github.com/flutter/flutter/issues/103511 for more context.<br/>@@@", + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "failure": { + "humanReason": "Infra Failure: Step('ios_debug_symbol_doctor.Recovery failed after 4 attempts') (retcode: 0)" + }, + "name": "$result" + } +] \ No newline at end of file
diff --git a/recipe_modules/os_utils/examples/full.expected/ios_debug_symbol_doctor_fails_then_succeeds.json b/recipe_modules/os_utils/examples/full.expected/ios_debug_symbol_doctor_fails_then_succeeds.json new file mode 100644 index 0000000..2378f13 --- /dev/null +++ b/recipe_modules/os_utils/examples/full.expected/ios_debug_symbol_doctor_fails_then_succeeds.json
@@ -0,0 +1,511 @@ +[ + { + "cmd": [], + "name": "ios_debug_symbol_doctor", + "~followup_annotations": [ + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "cmd": [], + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "python3", + "-u", + "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py", + "--path", + "[CACHE]/cocoon", + "--url", + "https://flutter.googlesource.com/mirrors/cocoon" + ], + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git setup", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "fetch", + "origin", + "main", + "--recurse-submodules", + "--progress", + "--tags" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "PATH": "RECIPE_REPO[depot_tools]:<PATH>" + }, + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git fetch", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "checkout", + "-f", + "FETCH_HEAD" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git checkout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "rev-parse", + "HEAD" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.read revision", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@", + "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@" + ] + }, + { + "cmd": [ + "git", + "clean", + "-f", + "-d", + "-x" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git clean", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "sync" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.submodule sync", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "update", + "--init", + "--recursive" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.submodule update", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "dart", + "pub", + "get" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.pub get device_doctor", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "diagnose" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.diagnose", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_EXCEPTION@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "recover", + "--cocoon-root", + "[CACHE]/cocoon", + "--timeout", + "120" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.recover with 120 second timeout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "diagnose" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "infra_step": true, + "name": "ios_debug_symbol_doctor.diagnose (2)", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [], + "name": "Killing Processes" + }, + { + "cmd": [ + "killall", + "-9", + "dart" + ], + "infra_step": true, + "name": "Killing Processes.kill dart", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "killall", + "-9", + "flutter" + ], + "infra_step": true, + "name": "Killing Processes.kill flutter", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "killall", + "-9", + "Chrome" + ], + "infra_step": true, + "name": "Killing Processes.kill Chrome", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "killall", + "-9", + "Safari" + ], + "infra_step": true, + "name": "Killing Processes.kill Safari", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "killall", + "-9", + "java" + ], + "infra_step": true, + "name": "Killing Processes.kill Safari (2)", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "killall", + "-9", + "adb" + ], + "infra_step": true, + "name": "Killing Processes.kill Safari (3)", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "top", + "-l", + "3", + "-o", + "mem" + ], + "infra_step": true, + "name": "OS info" + }, + { + "cmd": [ + "xattr", + "/opt/s/w/ir/cipd_bin_packages/python" + ], + "infra_step": true, + "name": "python xattr info" + }, + { + "cmd": [ + "xattr", + "/opt/s/w/ir/cipd_bin_packages/git" + ], + "infra_step": true, + "name": "git xattr info" + }, + { + "cmd": [ + "vpython3", + "-u", + "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", + "--json-output", + "/path/to/tmp/json", + "rmtree", + "[CLEANUP]/tmp_tmp_1" + ], + "infra_step": true, + "name": "temp dir for Create temp directory" + }, + { + "cmd": [ + "rm", + "-rf", + "[HOME]/Library/Developer/Xcode/DerivedData" + ], + "infra_step": true, + "name": "Delete mac deriveddata" + }, + { + "cmd": [], + "name": "Shutdown simulators" + }, + { + "cmd": [ + "sudo", + "xcrun", + "simctl", + "shutdown", + "all" + ], + "name": "Shutdown simulators.Shutdown simulators", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "sudo", + "xcrun", + "simctl", + "erase", + "all" + ], + "name": "Shutdown simulators.Erase simulators", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [], + "name": "Dismiss dialogs" + }, + { + "cmd": [], + "name": "Dismiss dialogs.Checkout flutter/cocoon", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "python3", + "-u", + "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py", + "--path", + "[CACHE]/cocoon", + "--url", + "https://flutter.googlesource.com/mirrors/cocoon" + ], + "name": "Dismiss dialogs.Checkout flutter/cocoon.git setup", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "fetch", + "origin", + "main", + "--recurse-submodules", + "--progress", + "--tags" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "PATH": "RECIPE_REPO[depot_tools]:<PATH>" + }, + "infra_step": true, + "name": "Dismiss dialogs.Checkout flutter/cocoon.git fetch", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "checkout", + "-f", + "FETCH_HEAD" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "Dismiss dialogs.Checkout flutter/cocoon.git checkout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "rev-parse", + "HEAD" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "Dismiss dialogs.Checkout flutter/cocoon.read revision", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@", + "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@" + ] + }, + { + "cmd": [ + "git", + "clean", + "-f", + "-d", + "-x" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "Dismiss dialogs.Checkout flutter/cocoon.git clean", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "sync" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "Dismiss dialogs.Checkout flutter/cocoon.submodule sync", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "update", + "--init", + "--recursive" + ], + "cwd": "[CACHE]/cocoon", + "infra_step": true, + "name": "Dismiss dialogs.Checkout flutter/cocoon.submodule update", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "chmod", + "755", + "RECIPE_MODULE[flutter::os_utils]/resources/dismiss_dialogs.sh" + ], + "infra_step": true, + "name": "Dismiss dialogs.Set execute permission", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "idevice_id", + "-l" + ], + "cwd": "[CACHE]/cocoon/device_doctor/tool/infra-dialog", + "infra_step": true, + "name": "Dismiss dialogs.Find device id", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "RECIPE_MODULE[flutter::os_utils]/resources/dismiss_dialogs.sh", + "" + ], + "cwd": "[CACHE]/cocoon/device_doctor/tool/infra-dialog", + "infra_step": true, + "name": "Dismiss dialogs.Run app to dismiss dialogs", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "ln", + "-s", + "/a/file", + "/a/b/c/simlink" + ], + "infra_step": true, + "name": "Link /a/b/c/simlink to /a/file" + }, + { + "cmd": [ + "killall", + "-9", + "com.apple.CoreSimulator.CoreSimulatorDevice" + ], + "infra_step": true, + "name": "kill dart" + }, + { + "name": "$result" + } +] \ No newline at end of file
diff --git a/recipe_modules/os_utils/examples/full.expected/mac_linux.json b/recipe_modules/os_utils/examples/full.expected/mac.json similarity index 100% rename from recipe_modules/os_utils/examples/full.expected/mac_linux.json rename to recipe_modules/os_utils/examples/full.expected/mac.json
diff --git a/recipe_modules/os_utils/examples/full.py b/recipe_modules/os_utils/examples/full.py index 0d44ad5..5bbca64 100644 --- a/recipe_modules/os_utils/examples/full.py +++ b/recipe_modules/os_utils/examples/full.py
@@ -15,6 +15,7 @@ def RunSteps(api): + api.os_utils.ios_debug_symbol_doctor() api.os_utils.kill_processes() api.os_utils.collect_os_info() @@ -39,10 +40,29 @@ api.platform('win', 64), ) yield api.test( - 'mac_linux', + 'mac', api.platform('mac', 64), ) yield api.test( + 'ios_debug_symbol_doctor_fails_then_succeeds', + api.step_data('ios_debug_symbol_doctor.diagnose', retcode=1), + api.platform('mac', 64), + api.properties.environ( + properties.EnvProperties(SWARMING_BOT_ID='flutter-devicelab-mac-1') + ), + ) + yield api.test( + 'ios_debug_symbol_doctor_fails_four_times', + api.step_data('ios_debug_symbol_doctor.diagnose', retcode=1), + api.step_data('ios_debug_symbol_doctor.diagnose (2)', retcode=1), + api.step_data('ios_debug_symbol_doctor.diagnose (3)', retcode=1), + api.step_data('ios_debug_symbol_doctor.diagnose (4)', retcode=1), + api.platform('mac', 64), + api.properties.environ( + properties.EnvProperties(SWARMING_BOT_ID='flutter-devicelab-mac-1') + ), + ) + yield api.test( 'linux_linux', api.platform('linux', 64), )
diff --git a/recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json b/recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json index 01b0c81..4bd60d0 100644 --- a/recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json +++ b/recipes/devicelab/devicelab_drone.expected/xcode-devicelab.json
@@ -2,11 +2,10 @@ { "cmd": [ "top", - "-b", - "-n", + "-l", "3", "-o", - "%MEM" + "mem" ], "infra_step": true, "luci_context": { @@ -24,6 +23,46 @@ "name": "OS info" }, { + "cmd": [ + "xattr", + "/opt/s/w/ir/cipd_bin_packages/python" + ], + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "python xattr info" + }, + { + "cmd": [ + "xattr", + "/opt/s/w/ir/cipd_bin_packages/git" + ], + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "git xattr info" + }, + { "cmd": [], "name": "Checkout flutter/flutter" }, @@ -385,7 +424,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -426,7 +465,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -467,7 +506,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -509,7 +548,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -538,6 +577,244 @@ }, { "cmd": [ + "rm", + "-rf", + "[HOME]/Library/Developer/Xcode/DerivedData" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Delete mac deriveddata" + }, + { + "cmd": [ + "cipd", + "ensure", + "-root", + "[CLEANUP]/tmp_tmp_3/osx_sdk", + "-ensure-file", + "infra/tools/mac_toolchain/${platform} latest", + "-max-threads", + "0", + "-json-output", + "/path/to/tmp/json" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ensure_installed", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/mac_toolchain/resolved-platform\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "[CLEANUP]/tmp_tmp_3/osx_sdk/mac_toolchain", + "install", + "-kind", + "ios", + "-xcode-version", + "deadbeef", + "-output-dir", + "/opt/flutter/xcode/deadbeef/XCode.app", + "-cipd-package-prefix", + "flutter_internal/ios/xcode" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "install xcode" + }, + { + "cmd": [ + "sudo", + "xcode-select", + "--switch", + "/opt/flutter/xcode/deadbeef/XCode.app" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "select XCode" + }, + { + "cmd": [ + "xcrun", + "simctl", + "list" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "list simulators" + }, + { + "cmd": [ "flutter", "doctor", "--verbose" @@ -551,7 +828,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -579,6 +856,1007 @@ "timeout": 300 }, { + "cmd": [], + "name": "Dismiss dialogs" + }, + { + "cmd": [], + "name": "Dismiss dialogs.Checkout flutter/cocoon", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "python3", + "-u", + "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py", + "--path", + "[CACHE]/cocoon", + "--url", + "https://flutter.googlesource.com/mirrors/cocoon" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Checkout flutter/cocoon.git setup", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "fetch", + "origin", + "main", + "--recurse-submodules", + "--progress", + "--tags" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PATH": "RECIPE_REPO[depot_tools]:<PATH>", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Checkout flutter/cocoon.git fetch", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "checkout", + "-f", + "FETCH_HEAD" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Checkout flutter/cocoon.git checkout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "rev-parse", + "HEAD" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Checkout flutter/cocoon.read revision", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@", + "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@" + ] + }, + { + "cmd": [ + "git", + "clean", + "-f", + "-d", + "-x" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Checkout flutter/cocoon.git clean", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "sync" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Checkout flutter/cocoon.submodule sync", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "update", + "--init", + "--recursive" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Checkout flutter/cocoon.submodule update", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "chmod", + "755", + "RECIPE_MODULE[flutter::os_utils]/resources/dismiss_dialogs.sh" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Set execute permission", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "idevice_id", + "-l" + ], + "cwd": "[CACHE]/cocoon/device_doctor/tool/infra-dialog", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Find device id", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "RECIPE_MODULE[flutter::os_utils]/resources/dismiss_dialogs.sh", + "" + ], + "cwd": "[CACHE]/cocoon/device_doctor/tool/infra-dialog", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Dismiss dialogs.Run app to dismiss dialogs", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [], + "name": "Shutdown simulators" + }, + { + "cmd": [ + "sudo", + "xcrun", + "simctl", + "shutdown", + "all" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Shutdown simulators.Shutdown simulators", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "sudo", + "xcrun", + "simctl", + "erase", + "all" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Shutdown simulators.Erase simulators", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [], + "name": "ios_debug_symbol_doctor" + }, + { + "cmd": [], + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "python3", + "-u", + "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py", + "--path", + "[CACHE]/cocoon", + "--url", + "https://flutter.googlesource.com/mirrors/cocoon" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git setup", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "fetch", + "origin", + "main", + "--recurse-submodules", + "--progress", + "--tags" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PATH": "RECIPE_REPO[depot_tools]:<PATH>", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git fetch", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "checkout", + "-f", + "FETCH_HEAD" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git checkout", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "rev-parse", + "HEAD" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.read revision", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@", + "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@" + ] + }, + { + "cmd": [ + "git", + "clean", + "-f", + "-d", + "-x" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.git clean", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "sync" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.submodule sync", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "git", + "submodule", + "update", + "--init", + "--recursive" + ], + "cwd": "[CACHE]/cocoon", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ios_debug_symbol_doctor.Checkout flutter/cocoon.submodule update", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "dart", + "pub", + "get" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ios_debug_symbol_doctor.pub get device_doctor", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "dart", + "[CACHE]/cocoon/device_doctor/bin/ios_debug_symbol_doctor.dart", + "diagnose" + ], + "cwd": "[CACHE]/cocoon/device_doctor", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "ios_debug_symbol_doctor.diagnose", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { "cmd": [ "chmod", "755", @@ -593,7 +1871,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -643,7 +1921,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -708,7 +1986,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -762,7 +2040,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -824,7 +2102,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -865,54 +2143,8 @@ }, { "cmd": [ - "pkill", - "chrome" - ], - "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", - "env": { - "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", - "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", - "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", - "GIT_BRANCH": "master", - "LUCI_BRANCH": "", - "LUCI_CI": "True", - "LUCI_PR": "", - "OS": "linux", - "PUB_CACHE": "[START_DIR]/.pub-cache", - "REVISION": "", - "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" - }, - "env_prefixes": { - "PATH": [ - "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", - "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", - "[CLEANUP]/tmp_tmp_2/vpython", - "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", - "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", - "[CLEANUP]/tmp_tmp_2/vpython" - ] - }, - "infra_step": true, - "luci_context": { - "realm": { - "name": "project:ci" - }, - "resultdb": { - "current_invocation": { - "name": "invocations/build:8945511751514863184", - "update_token": "token" - }, - "hostname": "rdbhost" - } - }, - "name": "Killing Processes.kill chrome", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "pkill", + "killall", + "-9", "dart" ], "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", @@ -924,7 +2156,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -959,7 +2191,8 @@ }, { "cmd": [ - "pkill", + "killall", + "-9", "flutter" ], "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", @@ -971,7 +2204,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -1006,7 +2239,104 @@ }, { "cmd": [ - "pkill", + "killall", + "-9", + "Chrome" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Killing Processes.kill Chrome", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "killall", + "-9", + "Safari" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "Killing Processes.kill Safari", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "killall", + "-9", "java" ], "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", @@ -1018,7 +2348,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -1046,14 +2376,15 @@ "hostname": "rdbhost" } }, - "name": "Killing Processes.kill java", + "name": "Killing Processes.kill Safari (2)", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] }, { "cmd": [ - "pkill", + "killall", + "-9", "adb" ], "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", @@ -1065,7 +2396,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -1093,7 +2424,7 @@ "hostname": "rdbhost" } }, - "name": "Killing Processes.kill adb", + "name": "Killing Processes.kill Safari (3)", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -1101,11 +2432,10 @@ { "cmd": [ "top", - "-b", - "-n", + "-l", "3", "-o", - "%MEM" + "mem" ], "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", "env": { @@ -1116,7 +2446,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -1148,6 +2478,94 @@ }, { "cmd": [ + "xattr", + "/opt/s/w/ir/cipd_bin_packages/python" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "python xattr info (2)" + }, + { + "cmd": [ + "xattr", + "/opt/s/w/ir/cipd_bin_packages/git" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "git xattr info (2)" + }, + { + "cmd": [ "echo", "test run is flaky" ], @@ -1160,7 +2578,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -1191,6 +2609,48 @@ "name": "step is flaky: run abc" }, { + "cmd": [ + "sudo", + "xcode-select", + "--reset" + ], + "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", + "env": { + "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]", + "FLUTTER_LOGS_DIR": "[CLEANUP]/flutter_logs_dir", + "FLUTTER_TEST_OUTPUTS_DIR": "[CLEANUP]/flutter_logs_dir", + "GIT_BRANCH": "master", + "LUCI_BRANCH": "", + "LUCI_CI": "True", + "LUCI_PR": "", + "OS": "darwin", + "PUB_CACHE": "[START_DIR]/.pub-cache", + "REVISION": "", + "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" + }, + "env_prefixes": { + "PATH": [ + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin", + "[CLEANUP]/tmp_tmp_1/flutter sdk/bin/cache/dart-sdk/bin", + "[CLEANUP]/tmp_tmp_2/vpython" + ] + }, + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "reset XCode" + }, + { "cmd": [], "name": "Upload metrics" }, @@ -1212,7 +2672,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -1251,7 +2711,7 @@ "/path/to/tmp/json", "copy", "extra.secret.token.should.not.be.logged", - "[CLEANUP]/tmp_tmp_3" + "[CLEANUP]/tmp_tmp_4" ], "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", "env": { @@ -1262,7 +2722,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -1308,7 +2768,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -1347,7 +2807,7 @@ "/path/to/tmp/json", "copy", "extra.secret.token.should.not.be.logged", - "[CLEANUP]/tmp_tmp_4" + "[CLEANUP]/tmp_tmp_5" ], "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", "env": { @@ -1358,7 +2818,7 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk" @@ -1404,7 +2864,7 @@ "--test-status", "Succeeded", "--service-account-token-file", - "[CLEANUP]/tmp_tmp_4" + "[CLEANUP]/tmp_tmp_5" ], "cwd": "[CLEANUP]/tmp_tmp_1/flutter sdk/dev/devicelab", "env": { @@ -1416,11 +2876,11 @@ "LUCI_BRANCH": "", "LUCI_CI": "True", "LUCI_PR": "", - "OS": "linux", + "OS": "darwin", "PUB_CACHE": "[START_DIR]/.pub-cache", "REVISION": "", "SDK_CHECKOUT_PATH": "[CLEANUP]/tmp_tmp_1/flutter sdk", - "TOKEN_PATH": "[CLEANUP]/tmp_tmp_3" + "TOKEN_PATH": "[CLEANUP]/tmp_tmp_4" }, "env_prefixes": { "PATH": [
diff --git a/recipes/devicelab/devicelab_drone.py b/recipes/devicelab/devicelab_drone.py index 55de93c..0cb5017 100644 --- a/recipes/devicelab/devicelab_drone.py +++ b/recipes/devicelab/devicelab_drone.py
@@ -178,6 +178,7 @@ ) api.os_utils.dismiss_dialogs() api.os_utils.shutdown_simulators() + api.os_utils.ios_debug_symbol_doctor() with api.context(env=env, env_prefixes=env_prefixes): resource_name = api.resource('runner.sh') api.step('Set execute permission', ['chmod', '755', resource_name]) @@ -336,7 +337,11 @@ tags=['ios'], dependencies=[{'dependency': 'xcode'}], git_branch='master', + **{'$flutter/devicelab_osx_sdk': { + 'sdk_version': 'deadbeef', + }} ), api.repo_util.flutter_environment_data(checkout_dir=checkout_path), + api.platform.name('mac'), api.buildbucket.ci_build(git_ref='refs/heads/master',), api.step_data( 'run abc',