aed15a701a
Bug: skia:10539 Change-Id: I3b51ef8c0106ac439f14a7f0ff61c8b88c7152ff Reviewed-on: https://skia-review.googlesource.com/c/skia/+/305957 Reviewed-by: Ravi Mistry <rmistry@google.com> Reviewed-by: Kevin Lubick <kjlubick@google.com> Commit-Queue: Eric Boren <borenet@google.com>
460 lines
16 KiB
JSON
460 lines
16 KiB
JSON
[
|
|
{
|
|
"cmd": [
|
|
"vpython",
|
|
"-u",
|
|
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
|
"--json-output",
|
|
"/path/to/tmp/json",
|
|
"ensure-directory",
|
|
"--mode",
|
|
"0777",
|
|
"[START_DIR]/tmp"
|
|
],
|
|
"infra_step": true,
|
|
"name": "makedirs tmp_dir"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
|
|
],
|
|
"name": "get swarming bot id",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
|
|
"@@@STEP_LOG_END@python.inline@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"/usr/bin/adb.1.0.35",
|
|
"shell",
|
|
"mkdir",
|
|
"-p",
|
|
"/sdcard/revenge_of_the_skiabot/resources"
|
|
],
|
|
"cwd": "[START_DIR]/skia",
|
|
"env": {
|
|
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"vpython",
|
|
"-u",
|
|
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
|
"--json-output",
|
|
"/path/to/tmp/json",
|
|
"copy",
|
|
"[START_DIR]/skia/infra/bots/assets/mskp/VERSION",
|
|
"/path/to/tmp/"
|
|
],
|
|
"infra_step": true,
|
|
"name": "Get mskp VERSION",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@VERSION@42@@@",
|
|
"@@@STEP_LOG_END@VERSION@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"vpython",
|
|
"-u",
|
|
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
|
"--json-output",
|
|
"/path/to/tmp/json",
|
|
"copy",
|
|
"42",
|
|
"[START_DIR]/tmp/MSKP_VERSION"
|
|
],
|
|
"infra_step": true,
|
|
"name": "write MSKP_VERSION",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@MSKP_VERSION@42@@@",
|
|
"@@@STEP_LOG_END@MSKP_VERSION@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"/usr/bin/adb.1.0.35",
|
|
"shell",
|
|
"cat",
|
|
"/sdcard/revenge_of_the_skiabot/MSKP_VERSION"
|
|
],
|
|
"cwd": "[START_DIR]/skia",
|
|
"env": {
|
|
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "read /sdcard/revenge_of_the_skiabot/MSKP_VERSION"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'stat', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
|
|
"/usr/bin/adb.1.0.35",
|
|
"/sdcard/revenge_of_the_skiabot/MSKP_VERSION"
|
|
],
|
|
"env": {
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "rm /sdcard/revenge_of_the_skiabot/MSKP_VERSION",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'stat', path]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@try:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ output = e.output@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('======')@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print(output)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('======')@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
|
|
"@@@STEP_LOG_END@python.inline@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'stat', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
|
|
"/usr/bin/adb.1.0.35",
|
|
"/sdcard/revenge_of_the_skiabot/mskp"
|
|
],
|
|
"env": {
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "rm /sdcard/revenge_of_the_skiabot/mskp",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'stat', path]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@try:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ output = e.output@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('======')@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print(output)@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print('======')@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
|
|
"@@@STEP_LOG_END@python.inline@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"/usr/bin/adb.1.0.35",
|
|
"shell",
|
|
"mkdir",
|
|
"-p",
|
|
"/sdcard/revenge_of_the_skiabot/mskp"
|
|
],
|
|
"cwd": "[START_DIR]/skia",
|
|
"env": {
|
|
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "mkdir /sdcard/revenge_of_the_skiabot/mskp"
|
|
},
|
|
{
|
|
"cmd": [],
|
|
"name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"vpython",
|
|
"-u",
|
|
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
|
"--json-output",
|
|
"/path/to/tmp/json",
|
|
"listdir",
|
|
"[START_DIR]/mskp",
|
|
"--recursive"
|
|
],
|
|
"infra_step": true,
|
|
"name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.list [START_DIR]/mskp",
|
|
"~followup_annotations": [
|
|
"@@@STEP_NEST_LEVEL@1@@@",
|
|
"@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/.file3@@@",
|
|
"@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/.ignore/file4@@@",
|
|
"@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/file1@@@",
|
|
"@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/subdir/file2@@@",
|
|
"@@@STEP_LOG_END@listdir@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"/usr/bin/adb.1.0.35",
|
|
"push",
|
|
"[START_DIR]/mskp/.file3",
|
|
"/sdcard/revenge_of_the_skiabot/mskp/.file3"
|
|
],
|
|
"cwd": "[START_DIR]/skia",
|
|
"env": {
|
|
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.push [START_DIR]/mskp/.file3",
|
|
"~followup_annotations": [
|
|
"@@@STEP_NEST_LEVEL@1@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"/usr/bin/adb.1.0.35",
|
|
"push",
|
|
"[START_DIR]/mskp/file1",
|
|
"/sdcard/revenge_of_the_skiabot/mskp/file1"
|
|
],
|
|
"cwd": "[START_DIR]/skia",
|
|
"env": {
|
|
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.push [START_DIR]/mskp/file1",
|
|
"~followup_annotations": [
|
|
"@@@STEP_NEST_LEVEL@1@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"/usr/bin/adb.1.0.35",
|
|
"push",
|
|
"[START_DIR]/mskp/subdir/file2",
|
|
"/sdcard/revenge_of_the_skiabot/mskp/subdir/file2"
|
|
],
|
|
"cwd": "[START_DIR]/skia",
|
|
"env": {
|
|
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.push [START_DIR]/mskp/subdir/file2",
|
|
"~followup_annotations": [
|
|
"@@@STEP_NEST_LEVEL@1@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"/usr/bin/adb.1.0.35",
|
|
"push",
|
|
"[START_DIR]/tmp/MSKP_VERSION",
|
|
"/sdcard/revenge_of_the_skiabot/MSKP_VERSION"
|
|
],
|
|
"cwd": "[START_DIR]/skia",
|
|
"env": {
|
|
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "push [START_DIR]/tmp/MSKP_VERSION /sdcard/revenge_of_the_skiabot/MSKP_VERSION"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"vpython",
|
|
"-u",
|
|
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
|
|
"--json-output",
|
|
"/path/to/tmp/json",
|
|
"ensure-directory",
|
|
"--mode",
|
|
"0777",
|
|
"[START_DIR]/[SWARM_OUT_DIR]"
|
|
],
|
|
"infra_step": true,
|
|
"name": "makedirs perf_dir"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"adb.1.0.35",
|
|
"push",
|
|
"[START_DIR]/build/skpbench",
|
|
"/data/local/tmp/"
|
|
],
|
|
"cwd": "[START_DIR]/skia",
|
|
"env": {
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "push skpbench"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"[START_DIR]/skia/tools/skpbench/skpbench.py",
|
|
"/data/local/tmp/skpbench",
|
|
"--resultsfile",
|
|
"[START_DIR]/[SWARM_OUT_DIR]/table",
|
|
"--config",
|
|
"gles",
|
|
"-v5",
|
|
"--adb",
|
|
"--adb_binary",
|
|
"adb.1.0.35",
|
|
"/sdcard/revenge_of_the_skiabot/mskp"
|
|
],
|
|
"env": {
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"name": "skpbench"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
|
|
],
|
|
"name": "get swarming task id",
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
|
|
"@@@STEP_LOG_END@python.inline@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"[START_DIR]/skia/tools/skpbench/skiaperf.py",
|
|
"[START_DIR]/[SWARM_OUT_DIR]/table",
|
|
"--properties",
|
|
"gitHash",
|
|
"abc123",
|
|
"swarming_bot_id",
|
|
"skia-bot-123",
|
|
"swarming_task_id",
|
|
"123456",
|
|
"--outfile",
|
|
"[START_DIR]/[SWARM_OUT_DIR]/skpbench_abc123_1337000001.json",
|
|
"--key",
|
|
"arch",
|
|
"arm64",
|
|
"compiler",
|
|
"Clang",
|
|
"cpu_or_gpu",
|
|
"GPU",
|
|
"cpu_or_gpu_value",
|
|
"Adreno530",
|
|
"extra_config",
|
|
"Android_Skpbench_Mskp",
|
|
"model",
|
|
"Pixel",
|
|
"os",
|
|
"Android",
|
|
"test_filter",
|
|
"All"
|
|
],
|
|
"env": {
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"name": "Parse skpbench output into Perf json"
|
|
},
|
|
{
|
|
"cmd": [
|
|
"python",
|
|
"-u",
|
|
"\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['/usr/bin/adb.1.0.35', '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 try:\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n except subprocess.CalledProcessError:\n pass\n print line\n",
|
|
"[START_DIR]/build"
|
|
],
|
|
"env": {
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "dump log",
|
|
"timeout": 300,
|
|
"~followup_annotations": [
|
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import os@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/usr/bin/adb.1.0.35', 'logcat', '-d'])@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ try:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ except subprocess.CalledProcessError:@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ pass@@@",
|
|
"@@@STEP_LOG_LINE@python.inline@ print line@@@",
|
|
"@@@STEP_LOG_END@python.inline@@@"
|
|
]
|
|
},
|
|
{
|
|
"cmd": [
|
|
"/usr/bin/adb.1.0.35",
|
|
"kill-server"
|
|
],
|
|
"cwd": "[START_DIR]/skia",
|
|
"env": {
|
|
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
|
|
"CHROME_HEADLESS": "1",
|
|
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
|
|
},
|
|
"infra_step": true,
|
|
"name": "kill adb server"
|
|
},
|
|
{
|
|
"name": "$result"
|
|
}
|
|
] |