blob: 67cd6ab15735f6c91b78b9ab327491474dd09337 [file] [log] [blame]
[
{
"cmd": [
"vpython",
"-u",
"RECIPE_REPO[depot_tools]/gerrit_client.py",
"changes",
"--host",
"https://chromium-review.googlesource.com",
"--json_file",
"/path/to/tmp/json",
"--limit",
"1",
"-p",
"change=456789",
"-o",
"ALL_REVISIONS",
"-o",
"DOWNLOAD_COMMANDS"
],
"env": {
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "gerrit fetch current CL info",
"timeout": 600,
"~followup_annotations": [
"@@@STEP_LOG_LINE@json.output@[@@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"branch\": \"master\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"owner\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"name\": \"John Doe\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"revisions\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"184ebe53805e102605d11f6b143486d15c23a09c\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"_number\": \"12\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"ref\": \"refs/changes/89/456789/12\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@]@@@",
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [
"vpython",
"-u",
"RECIPE_REPO[depot_tools]/gerrit_client.py",
"changes",
"--host",
"https://chromium-review.googlesource.com",
"--json_file",
"/path/to/tmp/json",
"--limit",
"1",
"-p",
"change=456789",
"-o",
"ALL_REVISIONS",
"-o",
"ALL_COMMITS"
],
"env": {
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "gerrit changes",
"~followup_annotations": [
"@@@STEP_LOG_LINE@json.output@[@@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"revisions\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"deadbeef\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"_number\": 12, @@@",
"@@@STEP_LOG_LINE@json.output@ \"commit\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"message\": \"\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@]@@@",
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [
"python",
"-u",
"RECIPE_REPO[depot_tools]/git_footers.py",
"--json",
"/path/to/tmp/json"
],
"name": "parse description",
"~followup_annotations": [
"@@@STEP_LOG_LINE@json.output@{}@@@",
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [],
"name": "initialize checkouts"
},
{
"cmd": [
"vpython",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0777",
"[CACHE]/builder/recipe_engine"
],
"infra_step": true,
"name": "initialize checkouts.recipe_engine checkout",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
"--spec-path",
"cache_dir = '[CACHE]/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'recipe_engine', 'url': 'https://chromium.googlesource.com/infra/luci/recipes-py'}]",
"--patch_root",
"recipe_engine",
"--revision_mapping_file",
"{\"got_revision\": \"recipe_engine\"}",
"--git-cache-dir",
"[CACHE]/git",
"--cleanup-dir",
"[CLEANUP]/bot_update",
"--output_json",
"/path/to/tmp/json",
"--patch_ref",
"https://chromium.googlesource.com/infra/luci/recipes-py@refs/heads/master:refs/changes/89/456789/12",
"--revision",
"recipe_engine@HEAD"
],
"cwd": "[CACHE]/builder/recipe_engine",
"env": {
"GIT_HTTP_LOW_SPEED_LIMIT": "102400",
"GIT_HTTP_LOW_SPEED_TIME": "300"
},
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"infra_step": true,
"name": "initialize checkouts.bot_update",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_TEXT@Some step text@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
"@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"recipe_engine\": \"HEAD\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"recipe_engine\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/recipe_engine.git\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"88cacb3086f508cc2e4c620a968149db53e34e35\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
"@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"recipe_engine\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"88cacb3086f508cc2e4c620a968149db53e34e35\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#291664}\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"root\": \"recipe_engine\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"directories\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"recipe_engine\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/recipe_engine.git\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"88cacb3086f508cc2e4c620a968149db53e34e35\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@",
"@@@SET_BUILD_PROPERTY@got_revision@\"88cacb3086f508cc2e4c620a968149db53e34e35\"@@@",
"@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#291664}\"@@@"
]
},
{
"cmd": [
"git",
"rev-parse",
"FETCH_HEAD"
],
"cwd": "[CACHE]/builder/recipe_engine/recipe_engine",
"infra_step": true,
"name": "initialize checkouts.read CL revision",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"vpython",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0777",
"[CACHE]/builder/depot_tools"
],
"infra_step": true,
"name": "initialize checkouts.depot_tools checkout",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"python",
"-u",
"RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
"--spec-path",
"cache_dir = '[CACHE]/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'depot_tools', 'url': 'https://chromium.googlesource.com/chromium/tools/depot_tools'}]",
"--patch_root",
"depot_tools",
"--revision_mapping_file",
"{\"got_revision\": \"depot_tools\"}",
"--git-cache-dir",
"[CACHE]/git",
"--cleanup-dir",
"[CLEANUP]/bot_update",
"--output_json",
"/path/to/tmp/json",
"--revision",
"depot_tools@HEAD"
],
"cwd": "[CACHE]/builder/depot_tools",
"env": {
"GIT_HTTP_LOW_SPEED_LIMIT": "102400",
"GIT_HTTP_LOW_SPEED_TIME": "300"
},
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"infra_step": true,
"name": "initialize checkouts.bot_update (without patch)",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_TEXT@Some step text@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
"@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"depot_tools\": \"HEAD\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"depot_tools\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/depot_tools.git\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"59bbfb4465019d8ed83bfe88fef566922953452a\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
"@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"depot_tools\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"59bbfb4465019d8ed83bfe88fef566922953452a\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/master@{#91780}\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"root\": \"depot_tools\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"directories\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"depot_tools\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/depot_tools.git\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"59bbfb4465019d8ed83bfe88fef566922953452a\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@",
"@@@SET_BUILD_PROPERTY@got_revision@\"59bbfb4465019d8ed83bfe88fef566922953452a\"@@@",
"@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#91780}\"@@@"
]
},
{
"cmd": [
"git",
"clean",
"-xf"
],
"cwd": "[CACHE]/builder/recipe_engine/recipe_engine",
"infra_step": true,
"name": "git clean"
},
{
"cmd": [
"git",
"checkout",
"-f",
"refs/remotes/origin/master"
],
"cwd": "[CACHE]/builder/recipe_engine/recipe_engine",
"infra_step": true,
"name": "sync recipe_engine to master"
},
{
"cmd": [],
"name": "find last non-crashing upstream revision"
},
{
"cmd": [
"vpython",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CACHE]/builder/depot_tools/depot_tools/infra/config/recipes.cfg",
"/path/to/tmp/"
],
"infra_step": true,
"name": "find last non-crashing upstream revision.parse recipes.cfg",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@recipes.cfg@{@@@",
"@@@STEP_LOG_LINE@recipes.cfg@ \"recipes_path\": \"some/path\"@@@",
"@@@STEP_LOG_LINE@recipes.cfg@}@@@",
"@@@STEP_LOG_END@recipes.cfg@@@"
]
},
{
"cmd": [
"python",
"-u",
"[CACHE]/builder/depot_tools/depot_tools/some/path/recipes.py",
"-O",
"recipe_engine=[CACHE]/builder/recipe_engine/recipe_engine",
"test",
"train",
"--no-docs"
],
"name": "find last non-crashing upstream revision.train recipes at upstream master",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [],
"name": "find last non-crashing upstream revision.using upstream master as base",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"git",
"rev-parse",
"HEAD"
],
"cwd": "[CACHE]/builder/recipe_engine/recipe_engine",
"infra_step": true,
"name": "find last non-crashing upstream revision.get upstream base revision",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"git",
"add",
"--all"
],
"cwd": "[CACHE]/builder/depot_tools/depot_tools",
"infra_step": true,
"name": "save post-train downstream diff"
},
{
"cmd": [
"git",
"clean",
"-xf"
],
"cwd": "[CACHE]/builder/recipe_engine/recipe_engine",
"infra_step": true,
"name": "git clean (2)"
},
{
"cmd": [
"git",
"checkout",
"-f",
"abcd"
],
"cwd": "[CACHE]/builder/recipe_engine/recipe_engine",
"infra_step": true,
"name": "checkout base for cherry-pick"
},
{
"cmd": [
"git",
"cherry-pick",
"deadbeef"
],
"cwd": "[CACHE]/builder/recipe_engine/recipe_engine",
"infra_step": true,
"name": "cherry-pick CL onto abcd"
},
{
"cmd": [
"python",
"-u",
"[CACHE]/builder/depot_tools/depot_tools/some/path/recipes.py",
"-O",
"recipe_engine=[CACHE]/builder/recipe_engine/recipe_engine",
"test",
"train",
"--no-docs"
],
"name": "train recipes at upstream CL",
"~followup_annotations": [
"@@@STEP_FAILURE@@@"
]
},
{
"cmd": [
"python",
"-u",
"import sys; sys.exit(1)"
],
"name": "MISSING FOOTER IN CL MESSAGE",
"~followup_annotations": [
"@@@STEP_TEXT@<br/><br/>Add<br/><br/> Recipe-Manual-Change: depot_tools<br/><br/>To your CL message.<br/><br/>This means that your upstream CL (this one) will require MANUAL CODE CHANGES<br/>in the downstream repo 'depot_tools'. Best practice is to prepare all downstream<br/>changes before landing the upstream CL, using:<br/><br/> depot_tools/some/path/recipes.py -O recipe_engine=/path/to/local/recipe_engine test train<br/><br/>When that CL has been reviewed, you can land this upstream change. Once the<br/>upstream change lands, roll it into your downstream CL:<br/><br/> depot_tools/recipes.py manual_roll # may require running multiple times.<br/><br/>Re-train expectations and upload the expectations plus the roll to your<br/>downstream CL. It's customary to copy the outputs of manual_roll to create<br/>a changelog to attach to the downstream CL as well to help reviewers understand<br/>what the roll contains.@@@",
"@@@STEP_FAILURE@@@"
]
},
{
"failure": {
"failure": {},
"humanReason": "Step('MISSING FOOTER IN CL MESSAGE') (retcode: 1)"
},
"name": "$result"
}
]