Be robust to a repo having non-Gerrit commits
Previously if a commit was made without a code review,
gerrit.change_details() would return None and the recipe would crash.
Bug: 44606
Change-Id: If0e60c16844db7445e4bbbe346adda8a2b2be4ba
diff --git a/recipes/recipes.expected/no_latest_cl.json b/recipes/recipes.expected/no_latest_cl.json
new file mode 100644
index 0000000..2b98e98
--- /dev/null
+++ b/recipes/recipes.expected/no_latest_cl.json
@@ -0,0 +1,1026 @@
+[
+ {
+ "cmd": [],
+ "name": "checkout"
+ },
+ {
+ "cmd": [],
+ "name": "checkout.ensure jiri",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[START_DIR]/cipd/jiri",
+ "-ensure-file",
+ "fuchsia/tools/jiri/${platform} git_revision:4bbab8725bd3c64b56e70af3d973d526cd894b49",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "checkout.ensure jiri.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:4bb\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"fuchsia/tools/jiri/resolved-platform\"@@@",
+ "@@@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": [
+ "[START_DIR]/cipd/jiri/jiri",
+ "init",
+ "-vv",
+ "-time",
+ "-j=50",
+ "-analytics-opt=false",
+ "-rewrite-sso-to-https=true",
+ "-cache",
+ "[CACHE]/git",
+ "-shared",
+ "[START_DIR]"
+ ],
+ "infra_step": true,
+ "name": "checkout.jiri init",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[START_DIR]/cipd/jiri/jiri",
+ "import",
+ "-vv",
+ "-time",
+ "-j=50",
+ "-name",
+ "garnet",
+ "-revision",
+ "HEAD",
+ "manifest/garnet",
+ "https://fuchsia.googlesource.com/garnet"
+ ],
+ "infra_step": true,
+ "name": "checkout.jiri import",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[START_DIR]/cipd/jiri/jiri",
+ "override",
+ "-vv",
+ "-time",
+ "-j=50",
+ "-revision",
+ "2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "infra/recipes",
+ "https://fuchsia.googlesource.com/infra/recipes"
+ ],
+ "infra_step": true,
+ "name": "checkout.jiri override",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[START_DIR]/cipd/jiri/jiri",
+ "update",
+ "-vv",
+ "-time",
+ "-j=50",
+ "-autoupdate=false",
+ "-attempts=3",
+ "-run-hooks=false"
+ ],
+ "infra_step": true,
+ "name": "checkout.jiri update",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[START_DIR]/cipd/jiri/jiri",
+ "run-hooks",
+ "-vv",
+ "-time",
+ "-j=50",
+ "-attempts=3"
+ ],
+ "infra_step": true,
+ "name": "checkout.jiri run-hooks",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[START_DIR]/cipd/jiri/jiri",
+ "source-manifest",
+ "-vv",
+ "-time",
+ "-j=50",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "checkout.jiri source-manifest",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@ \"directories\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@ \"manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@ \"git_checkout\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@ \"repo_url\": \"https://fuchsia.googlesource.com/manifest\", @@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@ \"revision\": \"4c2b0da3c06341db5cebe4d02c78c93c3b2bd78b\"@@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[source manifest]@}@@@",
+ "@@@STEP_LOG_END@json.output[source manifest]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/infra/recipes/recipes.py",
+ "test",
+ "run"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "name": "test"
+ },
+ {
+ "cmd": [],
+ "name": "get commit-queue"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::url]/resources/pycurl.py",
+ "--url",
+ "https://luci-config.appspot.com/_ah/api/config/v1/config_sets/projects/fuchsia/config/commit-queue.cfg",
+ "--status-json",
+ "/path/to/tmp/json",
+ "--outfile",
+ "/path/to/tmp/json"
+ ],
+ "name": "get commit-queue.get",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "get commit-queue.response",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw@OrderedDict([('content', 'CiAgICBzdWJtaXRfb3B0aW9uczogPAogICAgICBtYXhfYnVyc3Q6IDQKICAgICAgYnVyc3RfZGVsYXk6IDwKICAgICAgICBzZWNvbmRzOiA0ODAKICAgICAgPgogICAgPgoKICAgIGNvbmZpZ19ncm91cHM6IDwKICAgICAgZ2Vycml0OiA8CiAgICAgICAgdXJsOiAiaHR0cHM6Ly9mdWNoc2lhLXJldmlldy5nb29nbGVzb3VyY2UuY29tIgogICAgICAgIHByb2plY3RzOiA8CiAgICAgICAgICBuYW1lOiAiY29iYWx0IgogICAgICAgICAgcmVmX3JlZ2V4cDogInJlZnMvaGVhZHMvLisiCiAgICAgICAgPgogICAgICA+CgogICAgICB2ZXJpZmllcnM6IDwKICAgICAgICBnZXJyaXRfY3FfYWJpbGl0eTogPAogICAgICAgICAgY29tbWl0dGVyX2xpc3Q6ICJwcm9qZWN0LWZ1Y2hzaWEtY29tbWl0dGVycyIKICAgICAgICAgIGRyeV9ydW5fYWNjZXNzX2xpc3Q6ICJwcm9qZWN0LWZ1Y2hzaWEtdHJ5am9iLWFjY2VzcyIKICAgICAgICA+CiAgICAgICAgdHJ5am9iOiA8CiAgICAgICAgICBidWlsZGVyczogPAogICAgICAgICAgICBuYW1lOiAiZnVjaHNpYS90cnkvY29iYWx0LXg2NC1saW51eCIKICAgICAgICAgICAgbG9jYXRpb25fcmVnZXhwOiAiLioiCiAgICAgICAgICAgIGxvY2F0aW9uX3JlZ2V4cF9leGNsdWRlOiAiLisvWytdLy4qXC5tZCIKICAgICAgICAgID4KICAgICAgICA+CiAgICAgID4KICAgID4KCiAgICBjb25maWdfZ3JvdXBzOiA8CiAgICAgIGdlcnJpdDogPAogICAgICAgIHVybDogImh0dHBzOi8vZnVjaHNpYS1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbSIKICAgICAgICBwcm9qZWN0czogPAogICAgICAgICAgbmFtZTogImRvY3MiCiAgICAgICAgICByZWZfcmVnZXhwOiAicmVmcy9oZWFkcy8uKyIKICAgICAgICA+CiAgICAgID4KCiAgICAgIHZlcmlmaWVyczogPAogICAgICAgIGdlcnJpdF9jcV9hYmlsaXR5OiA8CiAgICAgICAgICBjb21taXR0ZXJfbGlzdDogInByb2plY3QtZnVjaHNpYS1jb21taXR0ZXJzIgogICAgICAgICAgZHJ5X3J1bl9hY2Nlc3NfbGlzdDogInByb2plY3QtZnVjaHNpYS10cnlqb2ItYWNjZXNzIgogICAgICAgID4KICAgICAgICB0cnlqb2I6IDwKICAgICAgICAgIGJ1aWxkZXJzOiA8CiAgICAgICAgICAgIG5hbWU6ICJmdWNoc2lhL3RyeS9kb2MtY2hlY2tlciIKICAgICAgICAgICAgZXhwZXJpbWVudF9wZXJjZW50YWdlOiAxMDAKICAgICAgICAgICAgbG9jYXRpb25fcmVnZXhwOiAiLioiCiAgICAgICAgICAgIGxvY2F0aW9uX3JlZ2V4cF9leGNsdWRlOiAiLisvWytdLy4qXC5tZCIKICAgICAgICAgID4KICAgICAgICA+CiAgICAgID4KICAgID4KCiAgICBjb25maWdfZ3JvdXBzOiA8CiAgICAgIGdlcnJpdDogPAogICAgICAgIHVybDogImh0dHBzOi8vZnVjaHNpYS1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbSIKICAgICAgICBwcm9qZWN0czogPAogICAgICAgICAgbmFtZTogImV4cGVyaWVuY2VzIgogICAgICAgICAgcmVmX3JlZ2V4cDogInJlZnMvaGVhZHMvLisiCiAgICAgICAgPgogICAgICA+CiAgICAgIHZlcmlmaWVyczogPAogICAgICAgIGdlcnJpdF9jcV9hYmlsaXR5OiA8CiAgICAgICAgICBjb21taXR0ZXJfbGlzdDogInByb2plY3QtZnVjaHNpYS1jb21taXR0ZXJzIgogICAgICAgICAgZHJ5X3J1bl9hY2Nlc3NfbGlzdDogInByb2plY3QtZnVjaHNpYS10cnlqb2ItYWNjZXNzIgogICAgICAgID4KICAgICAgICB0cmVlX3N0YXR1czogPAogICAgICAgICAgdXJsOiAiaHR0cHM6Ly9mdWNoc2lhLXN0ZW0tc3RhdHVzLmFwcHNwb3QuY29tIgogICAgICAgID4KCiAgICAgICAgdHJ5am9iOiA8CiAgICAgICAgICBidWlsZGVyczogPAogICAgICAgICAgICBuYW1lOiAiZnVjaHNpYS90cnkvZnVjaHNpYS1hcm02NC1kZWJ1ZyIKICAgICAgICAgICAgbG9jYXRpb25fcmVnZXhwOiAiLioiCiAgICAgICAgICAgIGxvY2F0aW9uX3JlZ2V4cF9leGNsdWRlOiAiLisvWytdLy4qXC5tZCIKICAgICAgICAgICAgbG9jYXRpb25fcmVnZXhwX2V4Y2x1ZGU6ICIuKy9bK10uKi9kb2NzLy4rIgogICAgICAgICAgPgogICAgICAgICAgYnVpbGRlcnM6IDwKICAgICAgICAgICAgbmFtZTogImZ1Y2hzaWEvdHJ5L2Z1Y2hzaWEteDY0LWRlYnVnIgogICAgICAgICAgICBsb2NhdGlvbl9yZWdleHA6ICIuKiIKICAgICAgICAgICAgbG9jYXRpb25fcmVnZXhwX2V4Y2x1ZGU6ICIuKy9bK10vLipcLm1kIgogICAgICAgICAgICBsb2NhdGlvbl9yZWdleHBfZXhjbHVkZTogIi4rL1srXS4qL2RvY3MvLisiCiAgICAgICAgICA+CiAgICAgICAgPgogICAgICA+CiAgICA+CiAgICA=')])@@@",
+ "@@@STEP_LOG_END@raw@@@",
+ "@@@STEP_LOG_LINE@decoded@@@@",
+ "@@@STEP_LOG_LINE@decoded@ submit_options: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ max_burst: 4@@@",
+ "@@@STEP_LOG_LINE@decoded@ burst_delay: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ seconds: 480@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@@@@",
+ "@@@STEP_LOG_LINE@decoded@ config_groups: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ gerrit: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ url: \"https://fuchsia-review.googlesource.com\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ projects: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ name: \"cobalt\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ ref_regexp: \"refs/heads/.+\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@@@@",
+ "@@@STEP_LOG_LINE@decoded@ verifiers: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ gerrit_cq_ability: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ committer_list: \"project-fuchsia-committers\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ dry_run_access_list: \"project-fuchsia-tryjob-access\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ tryjob: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ builders: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ name: \"fuchsia/try/cobalt-x64-linux\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp: \".*\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp_exclude: \".+/[+]/.*\\.md\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@@@@",
+ "@@@STEP_LOG_LINE@decoded@ config_groups: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ gerrit: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ url: \"https://fuchsia-review.googlesource.com\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ projects: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ name: \"docs\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ ref_regexp: \"refs/heads/.+\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@@@@",
+ "@@@STEP_LOG_LINE@decoded@ verifiers: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ gerrit_cq_ability: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ committer_list: \"project-fuchsia-committers\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ dry_run_access_list: \"project-fuchsia-tryjob-access\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ tryjob: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ builders: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ name: \"fuchsia/try/doc-checker\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ experiment_percentage: 100@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp: \".*\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp_exclude: \".+/[+]/.*\\.md\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@@@@",
+ "@@@STEP_LOG_LINE@decoded@ config_groups: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ gerrit: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ url: \"https://fuchsia-review.googlesource.com\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ projects: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ name: \"experiences\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ ref_regexp: \"refs/heads/.+\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ verifiers: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ gerrit_cq_ability: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ committer_list: \"project-fuchsia-committers\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ dry_run_access_list: \"project-fuchsia-tryjob-access\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ tree_status: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ url: \"https://fuchsia-stem-status.appspot.com\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@@@@",
+ "@@@STEP_LOG_LINE@decoded@ tryjob: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ builders: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ name: \"fuchsia/try/fuchsia-arm64-debug\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp: \".*\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp_exclude: \".+/[+]/.*\\.md\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp_exclude: \".+/[+].*/docs/.+\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ builders: <@@@",
+ "@@@STEP_LOG_LINE@decoded@ name: \"fuchsia/try/fuchsia-x64-debug\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp: \".*\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp_exclude: \".+/[+]/.*\\.md\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ location_regexp_exclude: \".+/[+].*/docs/.+\"@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ >@@@",
+ "@@@STEP_LOG_LINE@decoded@ @@@",
+ "@@@STEP_LOG_END@decoded@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "all_tryjobs",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@tryjobs@fuchsia/try/cobalt-x64-linux@@@",
+ "@@@STEP_LOG_LINE@tryjobs@fuchsia/try/fuchsia-arm64-debug@@@",
+ "@@@STEP_LOG_LINE@tryjobs@fuchsia/try/fuchsia-x64-debug@@@",
+ "@@@STEP_LOG_END@tryjobs@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "normalized_tryjobs",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@tryjobs@fuchsia/try/cobalt-x64-linux@@@",
+ "@@@STEP_LOG_LINE@tryjobs@fuchsia/try/fuchsia-arm64-debug@@@",
+ "@@@STEP_LOG_LINE@tryjobs@fuchsia/try/fuchsia-x64-debug@@@",
+ "@@@STEP_LOG_END@tryjobs@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "get_affected_recipes",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@all recipes@fuchsia@@@",
+ "@@@STEP_LOG_LINE@all recipes@recipes@@@",
+ "@@@STEP_LOG_END@all recipes@@@",
+ "@@@STEP_LOG_LINE@changed files (raw)@recipes/fuchsia.py@@@",
+ "@@@STEP_LOG_LINE@changed files (raw)@recipes/foo@@@",
+ "@@@STEP_LOG_LINE@changed files (raw)@recipes/non_expected_json_file.json@@@",
+ "@@@STEP_LOG_LINE@changed files (raw)@recipe_modules/foo/examples/full.expected/bar.json@@@",
+ "@@@STEP_LOG_LINE@changed files (raw)@recipe_modules/foo/examples/full.py@@@",
+ "@@@STEP_LOG_LINE@changed files (raw)@recipe_modules/foo/test_api.py@@@",
+ "@@@STEP_LOG_END@changed files (raw)@@@",
+ "@@@STEP_LOG_LINE@changed files (filtered)@recipes/fuchsia.py@@@",
+ "@@@STEP_LOG_LINE@changed files (filtered)@recipes/foo@@@",
+ "@@@STEP_LOG_LINE@changed files (filtered)@recipes/non_expected_json_file.json@@@",
+ "@@@STEP_LOG_END@changed files (filtered)@@@",
+ "@@@STEP_LOG_LINE@affected recipes@fuchsia@@@",
+ "@@@STEP_LOG_END@affected recipes@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
+ "[START_DIR]/infra/recipes/recipes",
+ "--recursive"
+ ],
+ "infra_step": true,
+ "name": "get_affected_recipes.ls-recipes",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/infra/recipes/recipes/foo@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/infra/recipes/recipes/fuchsia.py@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/infra/recipes/recipes/recipes.py@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/infra/recipes/recipes/sdk.expected@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "diff-tree",
+ "--no-commit-id",
+ "--name-only",
+ "-r",
+ "HEAD",
+ "-z"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "name": "get_affected_recipes.git diff-tree",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@files@recipes/fuchsia.py@@@",
+ "@@@STEP_LOG_LINE@files@recipes/foo@@@",
+ "@@@STEP_LOG_LINE@files@recipes/non_expected_json_file.json@@@",
+ "@@@STEP_LOG_LINE@files@recipe_modules/foo/examples/full.expected/bar.json@@@",
+ "@@@STEP_LOG_LINE@files@recipe_modules/foo/examples/full.py@@@",
+ "@@@STEP_LOG_LINE@files@recipe_modules/foo/test_api.py@@@",
+ "@@@STEP_LOG_END@files@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[START_DIR]/infra/recipes/recipes.py",
+ "analyze",
+ "{\"files\": [\"recipes/fuchsia.py\", \"recipes/foo\", \"recipes/non_expected_json_file.json\"], \"recipes\": [\"fuchsia\", \"recipes\"]}",
+ "/path/to/tmp/json"
+ ],
+ "name": "get_affected_recipes.recipes-analyze",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"error\": \"\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"invalidRecipes\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"recipes\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fuchsia\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "get builders",
+ "~followup_annotations": [
+ "@@@STEP_SUMMARY_TEXT@selected 2 builds@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "get builders.fuchsia/try/cobalt-x64-linux",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_SUMMARY_TEXT@no recent builds found@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "infra_step": true,
+ "name": "get builders.fuchsia/try/cobalt-x64-linux.buildbucket.search",
+ "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.infra.recipe,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 1, \"predicate\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"cobalt-x64-linux\", \"project\": \"fuchsia\"}, \"status\": \"SUCCESS\"}}}]}",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.infra.recipe,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"pageSize\": 1, @@@",
+ "@@@STEP_LOG_LINE@request@ \"predicate\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"try\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"cobalt-x64-linux\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"fuchsia\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"status\": \"SUCCESS\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "get builders.fuchsia/try/fuchsia-arm64-debug",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_SUMMARY_TEXT@SELECTED@@@",
+ "@@@STEP_LOG_LINE@recipe_used@fuchsia@@@",
+ "@@@STEP_LOG_END@recipe_used@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "infra_step": true,
+ "name": "get builders.fuchsia/try/fuchsia-arm64-debug.buildbucket.search",
+ "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.infra.recipe,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 1, \"predicate\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"fuchsia-arm64-debug\", \"project\": \"fuchsia\"}, \"status\": \"SUCCESS\"}}}]}",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builds\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": \"fuchsia/try/fuchsia-arm64-debug\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"endTime\": \"2012-05-13T12:53:20Z\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"37\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"recipe\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"fuchsia\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"input\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"gerritChanges\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"host\": \"fuchsia-review.googlesource.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"fuchsia\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"status\": \"SUCCESS\"@@@",
+ "@@@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_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.infra.recipe,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"pageSize\": 1, @@@",
+ "@@@STEP_LOG_LINE@request@ \"predicate\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"try\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"fuchsia-arm64-debug\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"fuchsia\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"status\": \"SUCCESS\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@",
+ "@@@STEP_LINK@37@https://cr-buildbucket.appspot.com/build/37@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/led",
+ "-ensure-file",
+ "infra/tools/luci/led/${platform} latest",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "name": "get builders.fuchsia/try/fuchsia-arm64-debug.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/led/resolved-platform\"@@@",
+ "@@@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": [
+ "[CACHE]/led/led",
+ "get-build",
+ "37"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "name": "get builders.fuchsia/try/fuchsia-arm64-debug.led get-build",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"job_slices\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"userland\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"recipe_properties\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"recipe\": \"fuchsia\"@@@",
+ "@@@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@ \"top_level\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"led: bb-1-fuchsia/try/fuchsia-arm64-debug\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "get builders.fuchsia/try/fuchsia-arm64-debug.ensure gitiles",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[START_DIR]/cipd/gitiles",
+ "-ensure-file",
+ "infra/tools/luci/gitiles/${platform} latest",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "infra_step": true,
+ "name": "get builders.fuchsia/try/fuchsia-arm64-debug.ensure gitiles.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@3@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/gitiles/resolved-platform\"@@@",
+ "@@@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": [
+ "[START_DIR]/cipd/gitiles/gitiles",
+ "log",
+ "-json-output",
+ "/path/to/tmp/json",
+ "-limit",
+ "10",
+ "https://fuchsia.googlesource.com/fuchsia",
+ "refs/heads/master"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "name": "get builders.fuchsia/try/fuchsia-arm64-debug.log fuchsia",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@[]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "get builders.fuchsia/try/fuchsia-x64-debug",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_SUMMARY_TEXT@SELECTED@@@",
+ "@@@STEP_LOG_LINE@recipe_used@fuchsia@@@",
+ "@@@STEP_LOG_END@recipe_used@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "infra_step": true,
+ "name": "get builders.fuchsia/try/fuchsia-x64-debug.buildbucket.search",
+ "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.infra.recipe,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 1, \"predicate\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"fuchsia-x64-debug\", \"project\": \"fuchsia\"}, \"status\": \"SUCCESS\"}}}]}",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builds\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": \"fuchsia/try/fuchsia-x64-debug\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"endTime\": \"2012-05-13T12:53:20Z\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"37\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"recipe\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"fuchsia\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"input\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"gerritChanges\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"host\": \"fuchsia-review.googlesource.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"fuchsia\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"status\": \"SUCCESS\"@@@",
+ "@@@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_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.infra.recipe,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"pageSize\": 1, @@@",
+ "@@@STEP_LOG_LINE@request@ \"predicate\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"try\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"fuchsia-x64-debug\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"fuchsia\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"status\": \"SUCCESS\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@",
+ "@@@STEP_LINK@37@https://cr-buildbucket.appspot.com/build/37@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/led/led",
+ "get-build",
+ "37"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "name": "get builders.fuchsia/try/fuchsia-x64-debug.led get-build",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"job_slices\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"userland\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"recipe_properties\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"recipe\": \"fuchsia\"@@@",
+ "@@@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@ \"top_level\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"led: bb-1-fuchsia/try/fuchsia-x64-debug\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "configure builds"
+ },
+ {
+ "cmd": [],
+ "name": "configure builds.fuchsia/try/fuchsia-arm64-debug",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/led/led",
+ "edit-recipe-bundle"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "name": "configure builds.fuchsia/try/fuchsia-arm64-debug.led edit-recipe-bundle",
+ "stdin": "{\"job_slices\": [{\"userland\": {\"recipe_properties\": {\"recipe\": \"fuchsia\"}}}], \"top_level\": {\"name\": \"recipes-cq:fuchsia/try/fuchsia-arm64-debug\"}}",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_END@json.output (invalid)@@@",
+ "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+ "@@@STEP_LOG_END@json.output (exception)@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "configure builds.fuchsia/try/fuchsia-x64-debug",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/led/led",
+ "edit-recipe-bundle"
+ ],
+ "cwd": "[START_DIR]/infra/recipes",
+ "name": "configure builds.fuchsia/try/fuchsia-x64-debug.led edit-recipe-bundle",
+ "stdin": "{\"job_slices\": [{\"userland\": {\"recipe_properties\": {\"recipe\": \"fuchsia\"}}}], \"top_level\": {\"name\": \"recipes-cq:fuchsia/try/fuchsia-x64-debug\"}}",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_END@json.output (invalid)@@@",
+ "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+ "@@@STEP_LOG_END@json.output (exception)@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "launch/collect"
+ },
+ {
+ "cmd": [],
+ "name": "launch/collect.0",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_SUMMARY_TEXT@2 launched, 2 passed@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "launch/collect.0.launch",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "launch/collect.0.launch.fuchsia/try/fuchsia-arm64-debug (attempt 0)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@3@@@",
+ "@@@STEP_LINK@Swarming task@https://chromium-swarm.appspot.com/task?id=200@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/led/led",
+ "launch"
+ ],
+ "infra_step": true,
+ "name": "launch/collect.0.launch.fuchsia/try/fuchsia-arm64-debug (attempt 0).led launch",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@4@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"swarming\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"host_name\": \"chromium-swarm.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"200\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@Swarming task@https://chromium-swarm.appspot.com/task?id=200@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "launch/collect.0.launch.fuchsia/try/fuchsia-x64-debug (attempt 0)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@3@@@",
+ "@@@STEP_LINK@Swarming task@https://chromium-swarm.appspot.com/task?id=100@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/led/led",
+ "launch"
+ ],
+ "infra_step": true,
+ "name": "launch/collect.0.launch.fuchsia/try/fuchsia-x64-debug (attempt 0).led launch",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@4@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"swarming\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"host_name\": \"chromium-swarm.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"100\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@Swarming task@https://chromium-swarm.appspot.com/task?id=100@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "launch/collect.0.ensure swarming",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/swarming_client",
+ "-ensure-file",
+ "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "launch/collect.0.ensure swarming.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@3@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:67b\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+ "@@@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": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-timeout",
+ "5m",
+ "200",
+ "100"
+ ],
+ "infra_step": true,
+ "name": "launch/collect.0.collect",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"100\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"recipes-cq:fuchsia/try/fuchsia-x64-debug\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@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@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": 100@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"200\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"recipes-cq:fuchsia/try/fuchsia-arm64-debug\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@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@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: recipes-cq:fuchsia/try/fuchsia-arm64-debug@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: recipes-cq:fuchsia/try/fuchsia-arm64-debug@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: recipes-cq:fuchsia/try/fuchsia-x64-debug@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: recipes-cq:fuchsia/try/fuchsia-x64-debug@@@",
+ "@@@STEP_LINK@task isolated outputs: recipes-cq:fuchsia/try/fuchsia-arm64-debug@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@",
+ "@@@STEP_LINK@task isolated outputs: recipes-cq:fuchsia/try/fuchsia-x64-debug@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "launch/collect.0.process results",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "launch/collect.0.process results.always pass",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@3@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "launch/collect.0.passed tasks",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LINK@fuchsia/try/fuchsia-arm64-debug (attempt 0)@https://chromium-swarm.appspot.com/task?id=200@@@",
+ "@@@STEP_LINK@fuchsia/try/fuchsia-x64-debug (attempt 0)@https://chromium-swarm.appspot.com/task?id=100@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "passes",
+ "~followup_annotations": [
+ "@@@STEP_SUMMARY_TEXT@2 passed@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "passes.fuchsia/try/fuchsia-arm64-debug",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@attempt 0 (pass)@https://chromium-swarm.appspot.com/task?id=200@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "passes.fuchsia/try/fuchsia-x64-debug",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@attempt 0 (pass)@https://chromium-swarm.appspot.com/task?id=100@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "flakes",
+ "~followup_annotations": [
+ "@@@STEP_SUMMARY_TEXT@0 flaked@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "failures",
+ "~followup_annotations": [
+ "@@@STEP_SUMMARY_TEXT@0 failed@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "all tasks passed"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/recipes.expected/two_pass_one_skip.json b/recipes/recipes.expected/two_pass_one_skip.json
index d201701..1ff7160 100644
--- a/recipes/recipes.expected/two_pass_one_skip.json
+++ b/recipes/recipes.expected/two_pass_one_skip.json
@@ -653,7 +653,7 @@
"-json-output",
"/path/to/tmp/json",
"-limit",
- "1",
+ "10",
"https://fuchsia.googlesource.com/fuchsia",
"refs/heads/master"
],
diff --git a/recipes/recipes.py b/recipes/recipes.py
index 90ea66e..6407af0 100644
--- a/recipes/recipes.py
+++ b/recipes/recipes.py
@@ -205,7 +205,10 @@
elif orig_build.input.gerrit_changes:
orig_cl = orig_build.input.gerrit_changes[0]
cl_id = get_latest_cl(api, orig_cl.host, orig_cl.project)
- build.include_cl('https://%s/c/%d' % (orig_cl.host, cl_id))
+ # Setting the CL to a more recent CL helps avoid rebase errors, but if
+ # unable to find a recent CL, keep the original. It usually works.
+ if cl_id:
+ build.include_cl('https://%s/c/%d' % (orig_cl.host, cl_id))
return build
@@ -225,16 +228,20 @@
gitiles_host = gerrit_host.replace('-review', '')
remote = 'https://%s/%s' % (gitiles_host, project)
log = api.gitiles.log(
- remote, 'refs/heads/master', limit=1, step_name='log %s' % project)
- assert len(log) == 1
+ remote, 'refs/heads/master', limit=10, step_name='log %s' % project)
- commit_hash = log[0]['id']
- change = api.gerrit.change_details(
- 'latest change details for %s' % project,
- commit_hash,
- test_data=api.json.test_api.output({'_number': 12345}),
- ok_ret='any')
- return change['_number']
+ for log_entry in log:
+ commit_hash = log_entry['id']
+ change = api.gerrit.change_details(
+ 'latest change details for %s' % project,
+ commit_hash,
+ test_data=api.json.test_api.output({'_number': 12345}),
+ ok_ret='any')
+ # Commits that are committed directly without code review don't have
+ # Gerrit change details.
+ if change:
+ return change['_number']
+ return None
def RunSteps(api, project, manifest, remote, selftest_cl, unittest_only):
@@ -303,7 +310,7 @@
def GenTests(api):
# yapf:disable
def build_data(name, recipe, age_seconds=ONE_DAY, cl_cached=False,
- skip=False):
+ skip=False, num_log_entries=1):
# This time is taken from the time recipe_engine module. I see no way
# of getting it programmatically.
curr_time = 1337000000
@@ -344,7 +351,7 @@
if recipe != 'recipes' and not cl_cached:
result += api.gitiles.log(
- 'get builders.{}.log {}'.format(name, cl.project), 'A', n=1)
+ 'get builders.{}.log {}'.format(name, cl.project), 'A', n=num_log_entries)
return result
@@ -521,4 +528,22 @@
props(unittest_only=True) +
ci_build
)
+
+ yield (
+ api.status_check.test('no_latest_cl') +
+ props() +
+ ci_build +
+ api.commit_queue.test_data() +
+ affected_recipes_data(['fuchsia']) +
+ build_data('fuchsia/try/fuchsia-arm64-debug', 'fuchsia', num_log_entries=0) +
+ api.swarming_retry.led_data('fuchsia/try/fuchsia-arm64-debug',
+ task_id=200) +
+ build_data('fuchsia/try/fuchsia-x64-debug', 'fuchsia', cl_cached=True) +
+ api.swarming_retry.led_data('fuchsia/try/fuchsia-x64-debug',
+ task_id=100) +
+ api.swarming_retry.collect_data([
+ task_result(100, 'fuchsia/try/fuchsia-x64-debug'),
+ task_result(200, 'fuchsia/try/fuchsia-arm64-debug'),
+ ])
+ )
# yapf:enable