1[ 2 { 3 "cmd": [ 4 "python", 5 "-u", 6 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 7 "--json-output", 8 "/path/to/tmp/json", 9 "ensure-directory", 10 "--mode", 11 "0777", 12 "[START_DIR]/tmp" 13 ], 14 "infra_step": true, 15 "name": "makedirs tmp_dir" 16 }, 17 { 18 "cmd": [ 19 "python", 20 "-u", 21 "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n" 22 ], 23 "name": "get swarming bot id", 24 "stdout": "/path/to/tmp/", 25 "~followup_annotations": [ 26 "@@@STEP_LOG_LINE@python.inline@import os@@@", 27 "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@", 28 "@@@STEP_LOG_END@python.inline@@@" 29 ] 30 }, 31 { 32 "cmd": [ 33 "/opt/infra-android/tools/adb", 34 "shell", 35 "mkdir", 36 "-p", 37 "/sdcard/revenge_of_the_skiabot/resources" 38 ], 39 "cwd": "[START_DIR]/skia", 40 "env": { 41 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 42 "CHROME_HEADLESS": "1", 43 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 44 }, 45 "infra_step": true, 46 "name": "mkdir /sdcard/revenge_of_the_skiabot/resources" 47 }, 48 { 49 "cmd": [ 50 "python", 51 "-u", 52 "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 53 "[START_DIR]/skia/resources", 54 "/sdcard/revenge_of_the_skiabot/resources" 55 ], 56 "env": { 57 "CHROME_HEADLESS": "1", 58 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 59 }, 60 "infra_step": true, 61 "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources", 62 "~followup_annotations": [ 63 "step returned non-zero exit code: 1", 64 "@@@STEP_LOG_LINE@python.inline@@@@", 65 "@@@STEP_LOG_LINE@python.inline@import os@@@", 66 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 67 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 68 "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@", 69 "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@", 70 "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@", 71 "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@", 72 "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@", 73 "@@@STEP_LOG_LINE@python.inline@ continue@@@", 74 "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@", 75 "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@", 76 "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 77 "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 78 "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@", 79 "@@@STEP_LOG_END@python.inline@@@", 80 "@@@STEP_EXCEPTION@@@" 81 ] 82 }, 83 { 84 "cmd": [ 85 "python", 86 "-u", 87 "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n", 88 "[START_DIR]/build" 89 ], 90 "env": { 91 "CHROME_HEADLESS": "1", 92 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 93 }, 94 "infra_step": true, 95 "name": "dump log", 96 "timeout": 300, 97 "~followup_annotations": [ 98 "@@@STEP_LOG_LINE@python.inline@@@@", 99 "@@@STEP_LOG_LINE@python.inline@import os@@@", 100 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 101 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 102 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 103 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])@@@", 104 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 105 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 106 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 107 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 108 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 109 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 110 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 111 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 112 "@@@STEP_LOG_LINE@python.inline@ print line@@@", 113 "@@@STEP_LOG_END@python.inline@@@" 114 ] 115 }, 116 { 117 "cmd": [ 118 "python", 119 "-u", 120 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 121 "--json-output", 122 "/path/to/tmp/json", 123 "copy", 124 " ", 125 "/home/chrome-bot/build123-m2--device5.force_quarantine" 126 ], 127 "infra_step": true, 128 "name": "Quarantining Bot" 129 }, 130 { 131 "cmd": [ 132 "/opt/infra-android/tools/adb", 133 "kill-server" 134 ], 135 "cwd": "[START_DIR]/skia", 136 "env": { 137 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 138 "CHROME_HEADLESS": "1", 139 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 140 }, 141 "infra_step": true, 142 "name": "kill adb server" 143 }, 144 { 145 "failure": { 146 "exception": { 147 "traceback": [ 148 "<omitted by recipe engine>" 149 ] 150 }, 151 "humanReason": "Infra Failure: Step('push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources') returned 1" 152 }, 153 "name": "$result" 154 } 155]