diff --git a/infra/bots/recipe_modules/skia/api.py b/infra/bots/recipe_modules/skia/api.py index 58d51ec7ec..a173601e64 100644 --- a/infra/bots/recipe_modules/skia/api.py +++ b/infra/bots/recipe_modules/skia/api.py @@ -19,6 +19,7 @@ from . import cmake_flavor from . import coverage_flavor from . import default_flavor from . import fake_specs +from . import gn_flavor from . import ios_flavor from . import pdfium_flavor from . import valgrind_flavor @@ -66,6 +67,10 @@ def is_cmake(builder_cfg): return 'CMake' in builder_cfg.get('extra_config', '') +def is_gn(builder_cfg): + return 'GN' == builder_cfg.get('extra_config', '') + + def is_ios(builder_cfg): return ('iOS' in builder_cfg.get('extra_config', '') or builder_cfg.get('os') == 'iOS') @@ -93,6 +98,8 @@ class SkiaApi(recipe_api.RecipeApi): return android_flavor.AndroidFlavorUtils(self) elif is_cmake(builder_cfg): return cmake_flavor.CMakeFlavorUtils(self) + elif is_gn(builder_cfg): + return gn_flavor.GNFlavorUtils(self) elif is_ios(builder_cfg): return ios_flavor.iOSFlavorUtils(self) elif is_pdfium(builder_cfg): diff --git a/infra/bots/recipe_modules/skia/fake_specs.py b/infra/bots/recipe_modules/skia/fake_specs.py index b83063dc3b..f8c07437c9 100644 --- a/infra/bots/recipe_modules/skia/fake_specs.py +++ b/infra/bots/recipe_modules/skia/fake_specs.py @@ -332,6 +332,34 @@ FAKE_SPECS = { 'upload_dm_results': True, 'upload_perf_results': False, }, + 'Build-Ubuntu-GCC-x86_64-Debug-GN': { + 'build_targets': [ + 'most', + ], + 'builder_cfg': { + 'compiler': 'GCC', + 'configuration': 'Debug', + 'extra_config': 'GN', + 'is_trybot': False, + 'os': 'Ubuntu', + 'role': 'Build', + 'target_arch': 'x86_64', + }, + 'configuration': 'Debug', + 'dm_flags': [ + '--dummy-flags', + ], + 'do_perf_steps': False, + 'do_test_steps': False, + 'env': { + 'GYP_DEFINES': 'skia_arch_type=x86_64 skia_warnings_as_errors=1', + }, + 'nanobench_flags': [ + '--dummy-flags', + ], + 'upload_dm_results': True, + 'upload_perf_results': False, + }, 'Build-Ubuntu-GCC-x86_64-Debug-MSAN': { 'build_targets': [ 'dm', @@ -560,6 +588,36 @@ FAKE_SPECS = { 'upload_dm_results': True, 'upload_perf_results': False, }, + 'Build-Win-MSVC-x86-Release-GN': { + 'build_targets': [ + 'most', + ], + 'builder_cfg': { + 'compiler': 'MSVC', + 'configuration': 'Release', + 'extra_config': 'GN', + 'is_trybot': False, + 'os': 'Win', + 'role': 'Build', + 'target_arch': 'x86', + }, + 'configuration': 'Release', + 'dm_flags': [ + '--dummy-flags', + ], + 'do_perf_steps': False, + 'do_test_steps': False, + 'env': { + 'GYP_DEFINES': + ('qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 ' + 'skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0'), + }, + 'nanobench_flags': [ + '--dummy-flags', + ], + 'upload_dm_results': True, + 'upload_perf_results': False, + }, 'Build-Win-MSVC-x86_64-Release': { 'build_targets': [ 'most', diff --git a/infra/bots/recipe_modules/skia/gn_flavor.py b/infra/bots/recipe_modules/skia/gn_flavor.py new file mode 100644 index 0000000000..d7fa86c77f --- /dev/null +++ b/infra/bots/recipe_modules/skia/gn_flavor.py @@ -0,0 +1,33 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import default_flavor + +"""GN flavor utils, used for building Skia with GN.""" +class GNFlavorUtils(default_flavor.DefaultFlavorUtils): + def compile(self, target): + """Build Skia with GN.""" + # Get the gn executable. + fetch_gn = self._skia_api.skia_dir.join('bin', 'fetch-gn') + self._skia_api.run(self._skia_api.m.step, 'fetch-gn', cmd=[fetch_gn], + cwd=self._skia_api.skia_dir) + + is_debug = 'is_debug=true' + if self._skia_api.configuration != 'Debug': + is_debug = 'is_debug=false' + gn_args = [is_debug] + + # Run gn gen. + gn_exe = 'gn' + if self._skia_api.m.platform.is_win: + gn_exe = 'gn.exe' + gn_gen = [gn_exe, 'gen', self.out_dir, '--args=%s' % ' '.join(gn_args)] + self._skia_api.run(self._skia_api.m.step, 'gn_gen', cmd=gn_gen, + cwd=self._skia_api.skia_dir) + + # Run ninja. + ninja_cmd = ['ninja', '-C', self.out_dir] + self._skia_api.run(self._skia_api.m.step, 'compile %s' % target, + cmd=ninja_cmd, + cwd=self._skia_api.skia_dir) diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json b/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json new file mode 100644 index 0000000000..e6cb1a1d7d --- /dev/null +++ b/infra/bots/recipes/swarm_compile.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json @@ -0,0 +1,204 @@ +[ + { + "cmd": [ + "python", + "-u", + "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n", + "[CUSTOM_/_B_WORK]", + "511" + ], + "name": "makedirs checkout_path", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@import sys, os@@@", + "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@", + "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@", + "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@", + "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py", + "config", + "--spec", + "cache_dir = '[CUSTOM_/_B_CACHE]'\nsolutions = [{'deps_file': 'DEPS', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]\ntarget_os = ['llvm']" + ], + "cwd": "[CUSTOM_/_B_WORK]", + "env": { + "CHROME_HEADLESS": "1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "gclient setup" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py", + "sync", + "--nohooks", + "--force", + "--verbose", + "--delete_unversioned_trees", + "--revision", + "skia@abc123", + "--output-json", + "/path/to/tmp/json" + ], + "cwd": "[CUSTOM_/_B_WORK]", + "env": { + "CHROME_HEADLESS": "1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "gclient sync", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"solutions\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"skia/\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"revision\": 164710@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@SET_BUILD_PROPERTY@got_revision@164710@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "[CUSTOM_/_B_WORK]/skia/tools/buildbot_spec.py", + "/path/to/tmp/json", + "Build-Ubuntu-GCC-x86_64-Debug-GN" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "name": "exec buildbot_spec.py", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"build_targets\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"most\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"builder_cfg\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"compiler\": \"GCC\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"extra_config\": \"GN\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"is_trybot\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"os\": \"Ubuntu\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"role\": \"Build\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"target_arch\": \"x86_64\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"dm_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_perf_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_test_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"GYP_DEFINES\": \"skia_arch_type=x86_64 skia_warnings_as_errors=1\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"nanobench_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_dm_results\": true, @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_perf_results\": false@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "[CUSTOM_/_B_WORK]/skia/bin/fetch-gn" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Debug", + "CHROME_HEADLESS": "1", + "GYP_DEFINES": "skia_arch_type=x86_64 skia_warnings_as_errors=1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN" + }, + "name": "fetch-gn" + }, + { + "cmd": [ + "gn", + "gen", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN/Debug", + "--args=is_debug=true" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Debug", + "CHROME_HEADLESS": "1", + "GYP_DEFINES": "skia_arch_type=x86_64 skia_warnings_as_errors=1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN" + }, + "name": "gn_gen" + }, + { + "cmd": [ + "ninja", + "-C", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN/Debug" + ], + "cwd": "[CUSTOM_/_B_WORK]/skia", + "env": { + "BUILDTYPE": "Debug", + "CHROME_HEADLESS": "1", + "GYP_DEFINES": "skia_arch_type=x86_64 skia_warnings_as_errors=1", + "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN" + }, + "name": "compile most" + }, + { + "cmd": [ + "python", + "-u", + "import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['dm', 'dm.exe', 'nanobench', 'nanobench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n", + "[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-x86_64-Debug-GN/Debug", + "[CUSTOM_[SWARM_OUT_DIR]]/out/Debug" + ], + "name": "copy build products", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@import errno@@@", + "@@@STEP_LOG_LINE@python.inline@import glob@@@", + "@@@STEP_LOG_LINE@python.inline@import os@@@", + "@@@STEP_LOG_LINE@python.inline@import shutil@@@", + "@@@STEP_LOG_LINE@python.inline@import sys@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@", + "@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@", + "@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['dm', 'dm.exe', 'nanobench', 'nanobench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@try:@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@", + "@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@", + "@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@", + "@@@STEP_LOG_LINE@python.inline@ raise@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@", + "@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@", + "@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@", + "@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@", + "@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@", + "@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +] \ No newline at end of file diff --git a/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json b/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json new file mode 100644 index 0000000000..6819581eb6 --- /dev/null +++ b/infra/bots/recipes/swarm_compile.expected/Build-Win-MSVC-x86-Release-GN.json @@ -0,0 +1,222 @@ +[ + { + "cmd": [ + "python", + "-u", + "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n", + "[CUSTOM_C:\\_B_WORK]", + "511" + ], + "name": "makedirs checkout_path", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@import sys, os@@@", + "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@", + "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@", + "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@", + "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_PACKAGE_REPO[depot_tools]\\gclient.py", + "config", + "--spec", + "cache_dir = '[CUSTOM_C:\\\\_B_CACHE]'\nsolutions = [{'deps_file': 'DEPS', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]\ntarget_os = ['llvm']" + ], + "cwd": "[CUSTOM_C:\\_B_WORK]", + "env": { + "CHROME_HEADLESS": "1", + "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "gclient setup" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_PACKAGE_REPO[depot_tools]\\gclient.py", + "sync", + "--nohooks", + "--force", + "--verbose", + "--delete_unversioned_trees", + "--revision", + "skia@abc123", + "--output-json", + "/path/to/tmp/json" + ], + "cwd": "[CUSTOM_C:\\_B_WORK]", + "env": { + "CHROME_HEADLESS": "1", + "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools];RECIPE_PACKAGE_REPO[depot_tools]" + }, + "name": "gclient sync", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"solutions\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"skia/\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"revision\": 164710@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@SET_BUILD_PROPERTY@got_revision@164710@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "[CUSTOM_C:\\_B_WORK]\\skia\\tools\\buildbot_spec.py", + "/path/to/tmp/json", + "Build-Win-MSVC-x86-Release-GN" + ], + "cwd": "[CUSTOM_C:\\_B_WORK]\\skia", + "name": "exec buildbot_spec.py", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"build_targets\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"most\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"builder_cfg\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"compiler\": \"MSVC\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Release\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"extra_config\": \"GN\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"is_trybot\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"os\": \"Win\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"role\": \"Build\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"target_arch\": \"x86\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Release\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"dm_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_perf_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_test_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"GYP_DEFINES\": \"qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"nanobench_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_dm_results\": true, @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_perf_results\": false@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "[CUSTOM_C:\\_B_WORK]\\skia\\bin\\fetch-gn" + ], + "cwd": "[CUSTOM_C:\\_B_WORK]\\skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "GYP_DEFINES": "qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0", + "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools];RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN" + }, + "name": "fetch-gn" + }, + { + "cmd": [ + "gn.exe", + "gen", + "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN\\Release", + "--args=is_debug=false" + ], + "cwd": "[CUSTOM_C:\\_B_WORK]\\skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "GYP_DEFINES": "qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0", + "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools];RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN" + }, + "name": "gn_gen" + }, + { + "cmd": [ + "ninja", + "-C", + "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN\\Release" + ], + "cwd": "[CUSTOM_C:\\_B_WORK]\\skia", + "env": { + "BUILDTYPE": "Release", + "CHROME_HEADLESS": "1", + "GYP_DEFINES": "qt_sdk=C:/Qt/4.8.5/ skia_arch_type=x86 skia_warnings_as_errors=1 skia_win_debuggers_path=c:/DbgHelp skia_win_ltcg=0", + "PATH": "%(PATH)s;RECIPE_PACKAGE_REPO[depot_tools];RECIPE_PACKAGE_REPO[depot_tools]", + "SKIA_OUT": "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN" + }, + "name": "compile most" + }, + { + "cmd": [ + "python", + "-u", + "import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['dm', 'dm.exe', 'nanobench', 'nanobench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products_whitelist:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n", + "[CUSTOM_C:\\_B_WORK]\\skia\\out\\Build-Win-MSVC-x86-Release-GN\\Release", + "[CUSTOM_[SWARM_OUT_DIR]]\\out\\Release" + ], + "name": "copy build products", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@import errno@@@", + "@@@STEP_LOG_LINE@python.inline@import glob@@@", + "@@@STEP_LOG_LINE@python.inline@import os@@@", + "@@@STEP_LOG_LINE@python.inline@import shutil@@@", + "@@@STEP_LOG_LINE@python.inline@import sys@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@", + "@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@", + "@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['dm', 'dm.exe', 'nanobench', 'nanobench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@try:@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@", + "@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@", + "@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@", + "@@@STEP_LOG_LINE@python.inline@ raise@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@", + "@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@", + "@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@", + "@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@", + "@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@", + "@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "import psutil\nfor p in psutil.process_iter():\n try:\n if p.name in ('mspdbsrv.exe', 'vctip.exe', 'cl.exe', 'link.exe'):\n p.kill()\n except psutil._error.AccessDenied:\n pass\n" + ], + "name": "cleanup", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@import psutil@@@", + "@@@STEP_LOG_LINE@python.inline@for p in psutil.process_iter():@@@", + "@@@STEP_LOG_LINE@python.inline@ try:@@@", + "@@@STEP_LOG_LINE@python.inline@ if p.name in ('mspdbsrv.exe', 'vctip.exe', 'cl.exe', 'link.exe'):@@@", + "@@@STEP_LOG_LINE@python.inline@ p.kill()@@@", + "@@@STEP_LOG_LINE@python.inline@ except psutil._error.AccessDenied:@@@", + "@@@STEP_LOG_LINE@python.inline@ pass@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +] \ No newline at end of file diff --git a/infra/bots/recipes/swarm_compile.py b/infra/bots/recipes/swarm_compile.py index 274ca5af95..e33a0365bf 100644 --- a/infra/bots/recipes/swarm_compile.py +++ b/infra/bots/recipes/swarm_compile.py @@ -27,11 +27,13 @@ TEST_BUILDERS = { 'Build-Ubuntu-GCC-Arm7-Release-Android_Vulkan', 'Build-Ubuntu-GCC-x86-Debug', 'Build-Ubuntu-GCC-x86_64-Debug-MSAN', + 'Build-Ubuntu-GCC-x86_64-Debug-GN', 'Build-Ubuntu-GCC-x86_64-Release-CMake', 'Build-Ubuntu-GCC-x86_64-Release-PDFium', 'Build-Ubuntu-GCC-x86_64-Release-Shared', 'Build-Ubuntu-GCC-x86_64-Release-Valgrind', 'Build-Win-MSVC-x86-Debug', + 'Build-Win-MSVC-x86-Release-GN', 'Build-Win-MSVC-x86_64-Release-Vulkan', ], }, diff --git a/infra/bots/recipes/swarm_trigger.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json b/infra/bots/recipes/swarm_trigger.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json new file mode 100644 index 0000000000..022949c92c --- /dev/null +++ b/infra/bots/recipes/swarm_trigger.expected/Build-Ubuntu-GCC-x86_64-Debug-GN.json @@ -0,0 +1,494 @@ +[ + { + "cmd": [ + "python", + "-u", + "\nimport json\nimport sys\n\nwith open(sys.argv[1]) as f:\n content = json.load(f)\n\nprint json.dumps(content, indent=2)\n", + "{\"buildername\": \"Build-Ubuntu-GCC-x86_64-Debug\", \"buildnumber\": 5, \"mastername\": \"client.skia\", \"path_config\": \"kitchen\", \"recipe\": \"swarm_trigger\", \"revision\": \"abc123\", \"slavename\": \"skiabot-linux-swarm-000\"}" + ], + "name": "print properties", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@import json@@@", + "@@@STEP_LOG_LINE@python.inline@import sys@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@with open(sys.argv[1]) as f:@@@", + "@@@STEP_LOG_LINE@python.inline@ content = json.load(f)@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@print json.dumps(content, indent=2)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "git", + "rev-parse", + "HEAD" + ], + "cwd": "[SLAVE_BUILD]/skia", + "name": "git rev-parse", + "stdout": "/path/to/tmp/" + }, + { + "cmd": [ + "python", + "-c", + "\"print 'abc123'\"" + ], + "name": "got_revision", + "~followup_annotations": [ + "@@@SET_BUILD_PROPERTY@got_revision@\"abc123\"@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", + "", + "[SLAVE_BUILD]/.gclient" + ], + "name": "write .gclient" + }, + { + "cmd": [ + "python", + "-u", + "import os\nfor r, _, files in os.walk(os.getcwd()):\n for fname in files:\n f = os.path.join(r, fname)\n if os.path.isfile(f):\n if os.access(f, os.X_OK):\n os.chmod(f, 0755)\n else:\n os.chmod(f, 0644)\n" + ], + "cwd": "[SLAVE_BUILD]/skia", + "name": "fix filemodes", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@import os@@@", + "@@@STEP_LOG_LINE@python.inline@for r, _, files in os.walk(os.getcwd()):@@@", + "@@@STEP_LOG_LINE@python.inline@ for fname in files:@@@", + "@@@STEP_LOG_LINE@python.inline@ f = os.path.join(r, fname)@@@", + "@@@STEP_LOG_LINE@python.inline@ if os.path.isfile(f):@@@", + "@@@STEP_LOG_LINE@python.inline@ if os.access(f, os.X_OK):@@@", + "@@@STEP_LOG_LINE@python.inline@ os.chmod(f, 0755)@@@", + "@@@STEP_LOG_LINE@python.inline@ else:@@@", + "@@@STEP_LOG_LINE@python.inline@ os.chmod(f, 0644)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py", + "--path", + "[SLAVE_BUILD]/swarming.client", + "--url", + "https://chromium.googlesource.com/external/swarming.client.git" + ], + "name": "git setup (swarming_client)" + }, + { + "cmd": [ + "git", + "retry", + "fetch", + "origin", + "master" + ], + "cwd": "[SLAVE_BUILD]/swarming.client", + "name": "git fetch (swarming_client)" + }, + { + "cmd": [ + "git", + "checkout", + "-f", + "FETCH_HEAD" + ], + "cwd": "[SLAVE_BUILD]/swarming.client", + "name": "git checkout (swarming_client)" + }, + { + "cmd": [ + "git", + "rev-parse", + "HEAD" + ], + "cwd": "[SLAVE_BUILD]/swarming.client", + "name": "read revision", + "stdout": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_TEXT@
checked out 'deadbeef'
@@@" + ] + }, + { + "cmd": [ + "git", + "clean", + "-f", + "-d", + "-x" + ], + "cwd": "[SLAVE_BUILD]/swarming.client", + "name": "git clean (swarming_client)" + }, + { + "cmd": [ + "git", + "submodule", + "sync" + ], + "cwd": "[SLAVE_BUILD]/swarming.client", + "name": "submodule sync (swarming_client)" + }, + { + "cmd": [ + "git", + "submodule", + "update", + "--init", + "--recursive" + ], + "cwd": "[SLAVE_BUILD]/swarming.client", + "name": "submodule update (swarming_client)" + }, + { + "cmd": [ + "python", + "-u", + "[SLAVE_BUILD]/swarming.client/swarming.py", + "--version" + ], + "name": "swarming.py --version", + "stdout": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_TEXT@0.8.6@@@" + ] + }, + { + "cmd": [ + "download_from_google_storage", + "--no_resume", + "--platform=linux*", + "--no_auth", + "--bucket", + "chromium-luci", + "-d", + "[SLAVE_BUILD]/skia/infra/bots/tools/luci-go/linux64" + ], + "name": "download luci-go linux" + }, + { + "cmd": [ + "download_from_google_storage", + "--no_resume", + "--platform=darwin", + "--no_auth", + "--bucket", + "chromium-luci", + "-d", + "[SLAVE_BUILD]/skia/infra/bots/tools/luci-go/mac64" + ], + "name": "download luci-go mac" + }, + { + "cmd": [ + "download_from_google_storage", + "--no_resume", + "--platform=win32", + "--no_auth", + "--bucket", + "chromium-luci", + "-d", + "[SLAVE_BUILD]/skia/infra/bots/tools/luci-go/win64" + ], + "name": "download luci-go win" + }, + { + "cmd": [ + "python", + "-u", + "\nimport os, sys\nfrom common import chromium_utils # Error? See https://crbug.com/584783.\n\n\nif os.path.exists(sys.argv[1]):\n chromium_utils.RemoveDirectory(sys.argv[1])\n", + "[SLAVE_BUILD]/luci-go" + ], + "env": { + "PYTHONPATH": "[SLAVE_BUILD]/skia/infra/bots/.recipe_deps/build/scripts" + }, + "name": "rmtree luci-go", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@import os, sys@@@", + "@@@STEP_LOG_LINE@python.inline@from common import chromium_utils # Error? See https://crbug.com/584783.@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@if os.path.exists(sys.argv[1]):@@@", + "@@@STEP_LOG_LINE@python.inline@ chromium_utils.RemoveDirectory(sys.argv[1])@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "\nimport shutil\nimport sys\nshutil.copytree(sys.argv[1], sys.argv[2], symlinks=bool(sys.argv[3]))\n", + "[SLAVE_BUILD]/skia/infra/bots/tools/luci-go", + "[SLAVE_BUILD]/luci-go", + "0" + ], + "name": "Copy Go binary" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[build::gsutil]/resources/gsutil_wrapper.py", + "--", + "RECIPE_PACKAGE_REPO[depot_tools]/gsutil.py", + "----", + "help" + ], + "name": "gsutil help" + }, + { + "cmd": [ + "python", + "-u", + "[SLAVE_BUILD]/skia/tools/buildbot_spec.py", + "/path/to/tmp/json", + "Build-Ubuntu-GCC-x86_64-Debug-GN" + ], + "cwd": "[SLAVE_BUILD]/skia", + "name": "exec buildbot_spec.py", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"build_targets\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"most\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"builder_cfg\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"compiler\": \"GCC\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"extra_config\": \"GN\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"is_trybot\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"os\": \"Ubuntu\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"role\": \"Build\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"target_arch\": \"x86_64\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"configuration\": \"Debug\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"dm_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_perf_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"do_test_steps\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"GYP_DEFINES\": \"skia_arch_type=x86_64 skia_warnings_as_errors=1\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"nanobench_flags\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"--dummy-flags\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_dm_results\": true, @@@", + "@@@STEP_LOG_LINE@json.output@ \"upload_perf_results\": false@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n", + "[SLAVE_BUILD]/swarming_temp_dir", + "511" + ], + "name": "makedirs swarming tmp dir", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@python.inline@@@@", + "@@@STEP_LOG_LINE@python.inline@import sys, os@@@", + "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@", + "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@", + "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(path):@@@", + "@@@STEP_LOG_LINE@python.inline@ print \"%s exists but is not a dir\" % path@@@", + "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", + "@@@STEP_LOG_LINE@python.inline@ os.makedirs(path, mode)@@@", + "@@@STEP_LOG_END@python.inline@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", + "{\n \"args\": [\n \"--isolate\", \n \"[SLAVE_BUILD]/skia/infra/bots/compile_skia.isolate\", \n \"--isolated\", \n \"[SLAVE_BUILD]/swarming_temp_dir/skia-task-compile_skia.isolated\", \n \"--config-variable\", \n \"OS\", \n \"Ubuntu\", \n \"--blacklist\", \n \".git\", \n \"--blacklist\", \n \"out\", \n \"--blacklist\", \n \"*.pyc\", \n \"--blacklist\", \n \".recipe_deps\", \n \"--extra-variable\", \n \"WORKDIR\", \n \"[SLAVE_BUILD]\"\n ], \n \"dir\": \"[SLAVE_BUILD]\", \n \"version\": 1\n}", + "[SLAVE_BUILD]/swarming_temp_dir/compile_skia.isolated.gen.json" + ], + "name": "Write compile_skia.isolated.gen.json" + }, + { + "cmd": [ + "python", + "-u", + "RECIPE_MODULE[build::isolate]/resources/isolate.py", + "[SLAVE_BUILD]/swarming.client", + "batcharchive", + "--dump-json", + "/path/to/tmp/json", + "--isolate-server", + "https://isolateserver.appspot.com", + "--verbose", + "[SLAVE_BUILD]/swarming_temp_dir/compile_skia.isolated.gen.json" + ], + "name": "isolate tests", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"compile_skia\": \"[dummy hash for compile_skia]\"@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"compile_skia\": \"[dummy hash for compile_skia]\"}@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "[SLAVE_BUILD]/swarming.client/swarming.py", + "trigger", + "--swarming", + "https://chromium-swarm.appspot.com", + "--isolate-server", + "https://isolateserver.appspot.com", + "--priority", + "90", + "--shards", + "1", + "--task-name", + "compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5", + "--dump-json", + "/path/to/tmp/json", + "--expiration", + "72000", + "--io-timeout", + "2400", + "--hard-timeout", + "14400", + "--dimension", + "gpu", + "none", + "--dimension", + "os", + "Ubuntu", + "--dimension", + "pool", + "Skia", + "--tag", + "allow_milo:1", + "--tag", + "buildername:Build-Ubuntu-GCC-x86_64-Debug-GN", + "--tag", + "buildnumber:5", + "--tag", + "data:[dummy hash for compile_skia]", + "--tag", + "master:client.skia", + "--tag", + "name:compile_skia", + "--tag", + "os:Ubuntu", + "--tag", + "revision:abc123", + "--tag", + "slavename:skiabot-linux-swarm-000", + "--tag", + "stepname:compile_skia on Ubuntu", + "--idempotent", + "[dummy hash for compile_skia]", + "--", + "--workdir", + "../../..", + "swarm_compile", + "buildername=Build-Ubuntu-GCC-x86_64-Debug-GN", + "mastername=client.skia.compile", + "buildnumber=1", + "slavename=skiabot-dummy-compile-slave", + "reason=Triggered by Skia swarm_trigger Recipe", + "swarm_out_dir=${ISOLATED_OUTDIR}", + "revision=abc123" + ], + "name": "[trigger] compile_skia on Ubuntu", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"shard_index\": 0, @@@", + "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"10000\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@STEP_LINK@shard #0@https://chromium-swarm.appspot.com/user/task/10000@@@", + "@@@STEP_LINK@view steps on Milo@https://luci-milo.appspot.com/swarming/task/10000@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "[SLAVE_BUILD]/swarming.client/swarming.py", + "collect", + "--swarming", + "https://chromium-swarm.appspot.com", + "--decorate", + "--print-status-updates", + "--json", + "{\"base_task_name\": \"compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5\", \"tasks\": {\"compile_skia/Ubuntu/[dummy has/Build-Ubuntu-GCC-x86_64-Debug-GN/5\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}", + "--task-summary-json", + "/path/to/tmp/json" + ], + "name": "compile_skia on Ubuntu", + "~followup_annotations": [ + "@@@STEP_TEXT@swarming pending 71s@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"shards\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"abandoned_ts\": null, @@@", + "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm30\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"durations\": [@@@", + "@@@STEP_LOG_LINE@json.output@ 5.7, @@@", + "@@@STEP_LOG_LINE@json.output@ 31.5@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"exit_codes\": [@@@", + "@@@STEP_LOG_LINE@json.output@ 0, @@@", + "@@@STEP_LOG_LINE@json.output@ 0@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"failure\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"id\": \"148aa78d7aa0000\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"internal_failure\": false, @@@", + "@@@STEP_LOG_LINE@json.output@ \"isolated_out\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"view_url\": \"blah\"@@@", + "@@@STEP_LOG_LINE@json.output@ }, @@@", + "@@@STEP_LOG_LINE@json.output@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"outputs\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"Heart beat succeeded on win32.\\n\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"Foo\"@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"state\": 112, @@@", + "@@@STEP_LOG_LINE@json.output@ \"try_number\": 1, @@@", + "@@@STEP_LOG_LINE@json.output@ \"user\": \"unknown\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@STEP_LINK@shard #0 isolated out@blah@@@", + "@@@STEP_LINK@view steps on Milo@https://luci-milo.appspot.com/swarming/task/148aa78d7aa0000@@@" + ] + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +] \ No newline at end of file diff --git a/infra/bots/recipes/swarm_trigger.py b/infra/bots/recipes/swarm_trigger.py index fe1e98ef1d..6ff27ea929 100644 --- a/infra/bots/recipes/swarm_trigger.py +++ b/infra/bots/recipes/swarm_trigger.py @@ -35,6 +35,7 @@ TEST_BUILDERS = { 'Build-Mac-Clang-x86_64-Release', 'Build-Ubuntu-GCC-Arm64-Debug-Android_Vulkan', 'Build-Ubuntu-GCC-x86_64-Debug', + 'Build-Ubuntu-GCC-x86_64-Debug-GN', 'Build-Ubuntu-GCC-x86_64-Release-RemoteRun', 'Build-Ubuntu-GCC-x86_64-Release-Trybot', 'Build-Win-MSVC-x86_64-Release',