aboutsummaryrefslogtreecommitdiffhomepage
path: root/infra/bots/recipes
diff options
context:
space:
mode:
authorGravatar borenet <borenet@chromium.org>2016-10-05 06:00:26 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-10-05 06:00:26 -0700
commit93408df16e742f4e4cf0338beb189dca78196992 (patch)
treee1689838d9aab68fa8973b59de69e0652137047e /infra/bots/recipes
parente47ae2998c1cf944db5743a416583dd0f042b6d9 (diff)
Add swarm_presubmit recipe
This allows us to add a Housekeeper-PerCommit-Presubmit bot/trybot BUG=skia:5823 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2392663004 Review-Url: https://codereview.chromium.org/2392663004
Diffstat (limited to 'infra/bots/recipes')
-rw-r--r--infra/bots/recipes/presubmit.expected/presubmit.json134
-rw-r--r--infra/bots/recipes/swarm_presubmit.expected/presubmit.json137
-rw-r--r--infra/bots/recipes/swarm_presubmit.py35
-rw-r--r--infra/bots/recipes/swarm_trigger.expected/Housekeeper-PerCommit-Presubmit.json463
-rw-r--r--infra/bots/recipes/swarm_trigger.py25
5 files changed, 793 insertions, 1 deletions
diff --git a/infra/bots/recipes/presubmit.expected/presubmit.json b/infra/bots/recipes/presubmit.expected/presubmit.json
new file mode 100644
index 0000000000..1c2751d9b4
--- /dev/null
+++ b/infra/bots/recipes/presubmit.expected/presubmit.json
@@ -0,0 +1,134 @@
+[
+ {
+ "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.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[SLAVE_BUILD]/out"
+ },
+ "name": "gclient setup"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py",
+ "sync",
+ "--verbose",
+ "--with_branch_heads",
+ "--nohooks",
+ "-j8",
+ "--reset",
+ "--force",
+ "--upstream",
+ "--no-nag-max",
+ "--delete_unversioned_trees",
+ "--revision",
+ "skia@abc123",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[SLAVE_BUILD]/out"
+ },
+ "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\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
+ "@@@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@\"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py",
+ "recurse",
+ "git",
+ "config",
+ "user.name",
+ "local_bot"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[SLAVE_BUILD]/out"
+ },
+ "name": "gclient recurse (git config user.name)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py",
+ "recurse",
+ "git",
+ "config",
+ "user.email",
+ "local_bot@example.com"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[SLAVE_BUILD]/out"
+ },
+ "name": "gclient recurse (git config user.email)"
+ },
+ {
+ "cmd": [
+ "python",
+ "PRESUBMIT.py"
+ ],
+ "name": "presubmit"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/swarm_presubmit.expected/presubmit.json b/infra/bots/recipes/swarm_presubmit.expected/presubmit.json
new file mode 100644
index 0000000000..cf33cf6c70
--- /dev/null
+++ b/infra/bots/recipes/swarm_presubmit.expected/presubmit.json
@@ -0,0 +1,137 @@
+[
+ {
+ "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.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[SLAVE_BUILD]/out"
+ },
+ "name": "gclient setup"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py",
+ "sync",
+ "--verbose",
+ "--with_branch_heads",
+ "--nohooks",
+ "-j8",
+ "--reset",
+ "--force",
+ "--upstream",
+ "--no-nag-max",
+ "--delete_unversioned_trees",
+ "--revision",
+ "skia@abc123",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[SLAVE_BUILD]/out"
+ },
+ "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\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
+ "@@@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@\"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py",
+ "recurse",
+ "git",
+ "config",
+ "user.name",
+ "local_bot"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[SLAVE_BUILD]/out"
+ },
+ "name": "gclient recurse (git config user.name)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_PACKAGE_REPO[depot_tools]/gclient.py",
+ "recurse",
+ "git",
+ "config",
+ "user.email",
+ "local_bot@example.com"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[SLAVE_BUILD]/out"
+ },
+ "name": "gclient recurse (git config user.email)"
+ },
+ {
+ "cmd": [
+ "git",
+ "cl",
+ "presubmit",
+ "--force"
+ ],
+ "cwd": "[CUSTOM_/_B_WORK]/skia",
+ "name": "presubmit"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/swarm_presubmit.py b/infra/bots/recipes/swarm_presubmit.py
new file mode 100644
index 0000000000..30155a2cd6
--- /dev/null
+++ b/infra/bots/recipes/swarm_presubmit.py
@@ -0,0 +1,35 @@
+# 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.
+
+
+# Recipe which runs the Skia presubmit.
+
+
+DEPS = [
+ 'core',
+ 'recipe_engine/properties',
+ 'recipe_engine/step',
+ 'vars',
+]
+
+
+def RunSteps(api):
+ api.vars.setup()
+ api.core.checkout_steps()
+ api.step('presubmit',
+ cmd=['git', 'cl', 'presubmit', '--force'],
+ cwd=api.vars.skia_dir)
+
+
+def GenTests(api):
+ yield (
+ api.test('presubmit') +
+ api.properties(buildername='Housekeeper-PerCommit-Presubmit',
+ mastername='client.skia.fyi',
+ slavename='dummy-slave',
+ buildnumber=5,
+ revision='abc123',
+ path_config='kitchen',
+ swarm_out_dir='[SWARM_OUT_DIR]')
+ )
diff --git a/infra/bots/recipes/swarm_trigger.expected/Housekeeper-PerCommit-Presubmit.json b/infra/bots/recipes/swarm_trigger.expected/Housekeeper-PerCommit-Presubmit.json
new file mode 100644
index 0000000000..13a0e48c48
--- /dev/null
+++ b/infra/bots/recipes/swarm_trigger.expected/Housekeeper-PerCommit-Presubmit.json
@@ -0,0 +1,463 @@
+[
+ {
+ "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\": \"Housekeeper-PerCommit-Presubmit\", \"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",
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:%(PATH)s"
+ },
+ "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@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "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"
+ ],
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:%(PATH)s"
+ },
+ "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"
+ ],
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:%(PATH)s"
+ },
+ "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"
+ ],
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:%(PATH)s"
+ },
+ "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",
+ "\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/presubmit_skia.isolate\", \n \"--isolated\", \n \"[SLAVE_BUILD]/swarming_temp_dir/skia-task-presubmit_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/presubmit_skia.isolated.gen.json"
+ ],
+ "name": "Write presubmit_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/presubmit_skia.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"presubmit_skia\": \"[dummy hash for presubmit_skia]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"presubmit_skia\": \"[dummy hash for presubmit_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",
+ "presubmit_skia/Ubuntu/[dummy has/Housekeeper-PerCommit-Presubmit/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:Housekeeper-PerCommit-Presubmit",
+ "--tag",
+ "buildnumber:5",
+ "--tag",
+ "data:[dummy hash for presubmit_skia]",
+ "--tag",
+ "master:client.skia",
+ "--tag",
+ "name:presubmit_skia",
+ "--tag",
+ "os:Ubuntu",
+ "--tag",
+ "revision:abc123",
+ "--tag",
+ "slavename:skiabot-linux-swarm-000",
+ "--tag",
+ "stepname:presubmit_skia on Ubuntu",
+ "[dummy hash for presubmit_skia]",
+ "--",
+ "--workdir",
+ "../../..",
+ "swarm_presubmit",
+ "buildername=Housekeeper-PerCommit-Presubmit",
+ "mastername=client.skia",
+ "buildnumber=5",
+ "slavename=skiabot-linux-swarm-000",
+ "reason=Triggered by Skia swarm_trigger Recipe",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=abc123"
+ ],
+ "name": "[trigger] presubmit_skia on Ubuntu",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"presubmit_skia/Ubuntu/[dummy has/Housekeeper-PerCommit-Presubmit/5\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"presubmit_skia/Ubuntu/[dummy has/Housekeeper-PerCommit-Presubmit/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\": \"presubmit_skia/Ubuntu/[dummy has/Housekeeper-PerCommit-Presubmit/5\", \"tasks\": {\"presubmit_skia/Ubuntu/[dummy has/Housekeeper-PerCommit-Presubmit/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": "presubmit_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 98c6a3f434..ed4aad6690 100644
--- a/infra/bots/recipes/swarm_trigger.py
+++ b/infra/bots/recipes/swarm_trigger.py
@@ -45,6 +45,7 @@ TEST_BUILDERS = {
'Build-Win-MSVC-x86_64-Release-Vulkan',
'Housekeeper-Nightly-RecreateSKPs_Canary',
'Housekeeper-PerCommit',
+ 'Housekeeper-PerCommit-Presubmit',
'Infra-PerCommit',
'Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot',
'Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs',
@@ -300,6 +301,23 @@ def housekeeper_swarm(api, builder_cfg, got_revision, infrabots_dir,
return api.swarming.collect_swarming_task(task)
+def presubmit_swarm(api, builder_cfg, got_revision, infrabots_dir):
+ task = trigger_task(
+ api,
+ 'presubmit',
+ api.properties['buildername'],
+ api.properties['mastername'],
+ api.properties['slavename'],
+ api.properties['buildnumber'],
+ builder_cfg,
+ got_revision,
+ infrabots_dir,
+ idempotent=False,
+ store_output=False,
+ cipd_packages=None)
+ api.swarming.collect_swarming_task(task)
+
+
def recreate_skps_swarm(api, builder_cfg, got_revision, infrabots_dir,
extra_isolate_hashes):
task = trigger_task(
@@ -595,6 +613,9 @@ def RunSteps(api):
builder_cfg = api.builder_name_schema.DictForBuilderName(builder_name)
+ if 'Presubmit' in builder_name:
+ return presubmit_swarm(api, builder_cfg, got_revision, infrabots_dir)
+
if 'RecreateSKPs' in builder_name:
recreate_skps_swarm(api, builder_cfg, got_revision, infrabots_dir,
extra_hashes)
@@ -699,7 +720,9 @@ def test_for_bot(api, builder, mastername, slavename, testname=None):
test += api.step_data(
'upload new .isolated file for upload_nano_results_skia',
stdout=api.raw_io.output('def456 XYZ.isolated'))
- if 'Housekeeper' in builder and 'RecreateSKPs' not in builder:
+ if ('Housekeeper' in builder and
+ 'RecreateSKPs' not in builder and
+ 'Presubmit' not in builder):
test += api.step_data(
'upload new .isolated file for housekeeper_skia',
stdout=api.raw_io.output('def456 XYZ.isolated'))