| [ |
| { |
| "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": [ |
| "vpython", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "copy", |
| "[START_DIR]/skia/infra/bots/assets/lottie-samples/VERSION", |
| "/path/to/tmp/" |
| ], |
| "infra_step": true, |
| "name": "Get lottie-samples 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/LOTTIE_VERSION" |
| ], |
| "infra_step": true, |
| "name": "write LOTTIE_VERSION", |
| "~followup_annotations": [ |
| "@@@STEP_LOG_LINE@LOTTIE_VERSION@42@@@", |
| "@@@STEP_LOG_END@LOTTIE_VERSION@@@" |
| ] |
| }, |
| { |
| "cmd": [ |
| "vpython", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "rmtree", |
| "[START_DIR]/test" |
| ], |
| "infra_step": true, |
| "name": "rmtree test" |
| }, |
| { |
| "cmd": [ |
| "vpython", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "ensure-directory", |
| "--mode", |
| "0777", |
| "[START_DIR]/test" |
| ], |
| "infra_step": true, |
| "name": "makedirs test" |
| }, |
| { |
| "cmd": [ |
| "python", |
| "-u", |
| "\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\n\nfrom urllib.request import urlopen\n\nHASHES_URL = sys.argv[1]\nRETRIES = 5\nTIMEOUT = 60\nWAIT_BASE = 15\n\nsocket.setdefaulttimeout(TIMEOUT)\nfor retry in range(RETRIES):\n try:\n with contextlib.closing(\n urlopen(HASHES_URL, timeout=TIMEOUT)) as w:\n hashes = w.read().decode('utf-8')\n with open(sys.argv[2], 'w') as f:\n f.write(hashes)\n break\n except Exception as e:\n print('Failed to get uninteresting hashes from %s:' % HASHES_URL)\n print(e)\n if retry == RETRIES:\n raise\n waittime = WAIT_BASE * math.pow(2, retry)\n print('Retry in %d seconds.' % waittime)\n time.sleep(waittime)\n", |
| "https://example.com/hashes.txt", |
| "[START_DIR]/tmp/uninteresting_hashes.txt" |
| ], |
| "env": { |
| "CHROME_HEADLESS": "1", |
| "PATH": "<PATH>:RECIPE_REPO[depot_tools]" |
| }, |
| "infra_step": true, |
| "name": "get uninteresting hashes", |
| "~followup_annotations": [ |
| "@@@STEP_LOG_LINE@python.inline@@@@", |
| "@@@STEP_LOG_LINE@python.inline@import contextlib@@@", |
| "@@@STEP_LOG_LINE@python.inline@import math@@@", |
| "@@@STEP_LOG_LINE@python.inline@import socket@@@", |
| "@@@STEP_LOG_LINE@python.inline@import sys@@@", |
| "@@@STEP_LOG_LINE@python.inline@import time@@@", |
| "@@@STEP_LOG_LINE@python.inline@@@@", |
| "@@@STEP_LOG_LINE@python.inline@from urllib.request import urlopen@@@", |
| "@@@STEP_LOG_LINE@python.inline@@@@", |
| "@@@STEP_LOG_LINE@python.inline@HASHES_URL = sys.argv[1]@@@", |
| "@@@STEP_LOG_LINE@python.inline@RETRIES = 5@@@", |
| "@@@STEP_LOG_LINE@python.inline@TIMEOUT = 60@@@", |
| "@@@STEP_LOG_LINE@python.inline@WAIT_BASE = 15@@@", |
| "@@@STEP_LOG_LINE@python.inline@@@@", |
| "@@@STEP_LOG_LINE@python.inline@socket.setdefaulttimeout(TIMEOUT)@@@", |
| "@@@STEP_LOG_LINE@python.inline@for retry in range(RETRIES):@@@", |
| "@@@STEP_LOG_LINE@python.inline@ try:@@@", |
| "@@@STEP_LOG_LINE@python.inline@ with contextlib.closing(@@@", |
| "@@@STEP_LOG_LINE@python.inline@ urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@", |
| "@@@STEP_LOG_LINE@python.inline@ hashes = w.read().decode('utf-8')@@@", |
| "@@@STEP_LOG_LINE@python.inline@ with open(sys.argv[2], 'w') as f:@@@", |
| "@@@STEP_LOG_LINE@python.inline@ f.write(hashes)@@@", |
| "@@@STEP_LOG_LINE@python.inline@ break@@@", |
| "@@@STEP_LOG_LINE@python.inline@ except Exception as e:@@@", |
| "@@@STEP_LOG_LINE@python.inline@ print('Failed to get uninteresting hashes from %s:' % HASHES_URL)@@@", |
| "@@@STEP_LOG_LINE@python.inline@ print(e)@@@", |
| "@@@STEP_LOG_LINE@python.inline@ if retry == RETRIES:@@@", |
| "@@@STEP_LOG_LINE@python.inline@ raise@@@", |
| "@@@STEP_LOG_LINE@python.inline@ waittime = WAIT_BASE * math.pow(2, retry)@@@", |
| "@@@STEP_LOG_LINE@python.inline@ print('Retry in %d seconds.' % waittime)@@@", |
| "@@@STEP_LOG_LINE@python.inline@ time.sleep(waittime)@@@", |
| "@@@STEP_LOG_END@python.inline@@@" |
| ] |
| }, |
| { |
| "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": [ |
| "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": [ |
| "catchsegv", |
| "[START_DIR]/build/dm", |
| "--example", |
| "--flags", |
| "--properties", |
| "bot", |
| "skia-bot-123", |
| "key1", |
| "value1", |
| "task", |
| "123456", |
| "--resourcePath", |
| "[START_DIR]/skia/resources", |
| "--lotties", |
| "[START_DIR]/skia/resources/skottie", |
| "[START_DIR]/lottie-samples", |
| "--uninterestingHashesFile", |
| "[START_DIR]/tmp/uninteresting_hashes.txt", |
| "--writePath", |
| "[START_DIR]/[SWARM_OUT_DIR]" |
| ], |
| "env": { |
| "CHROME_HEADLESS": "1", |
| "PATH": "<PATH>:RECIPE_REPO[depot_tools]" |
| }, |
| "name": "dm" |
| }, |
| { |
| "cmd": [ |
| "vpython", |
| "-u", |
| "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| "--json-output", |
| "/path/to/tmp/json", |
| "glob", |
| "[START_DIR]/[SWARM_OUT_DIR]", |
| "*.png" |
| ], |
| "infra_step": true, |
| "name": "find .png images", |
| "~followup_annotations": [ |
| "@@@STEP_LOG_LINE@glob@[START_DIR]/[SWARM_OUT_DIR]/someimage.png@@@", |
| "@@@STEP_LOG_END@glob@@@" |
| ] |
| }, |
| { |
| "cmd": [ |
| "gsutil", |
| "-m", |
| "cp", |
| "[START_DIR]/[SWARM_OUT_DIR]/*.png", |
| "gs://skia-infra-gm/dm-images-v1" |
| ], |
| "name": "upload .png images" |
| }, |
| { |
| "cmd": [ |
| "gsutil", |
| "cp", |
| "-Z", |
| "[START_DIR]/[SWARM_OUT_DIR]/dm.json", |
| "gs://skia-infra-gm/trybot/dm-json-v1/2012/05/14/12/1234_7/Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Release-All-Lottie/1337000001/dm.json" |
| ], |
| "name": "upload dm.json" |
| }, |
| { |
| "name": "$result" |
| } |
| ] |