roller: Support merge rolls Bug: b/512911021 Change-Id: Id3422de395b613e306cbf6c15185feafb6110889 Reviewed-on: https://pigweed-review.googlesource.com/c/infra/recipes/+/410575
diff --git a/recipes/roller.expected/mega.json b/recipes/roller.expected/mega.json index 5ef7a62..5822390 100644 --- a/recipes/roller.expected/mega.json +++ b/recipes/roller.expected/mega.json
@@ -7673,6 +7673,423 @@ }, { "cmd": [], + "name": "staging" + }, + { + "cmd": [ + "git", + "ls-remote", + "--heads", + "https://pigweed.googlesource.com/pigweed/pigweed", + "staging" + ], + "env": { + "GIT_ADVICE": "0", + "GIT_CONFIG_COUNT": "3", + "GIT_CONFIG_KEY_0": "gc.auto", + "GIT_CONFIG_KEY_1": "gc.autoDetach", + "GIT_CONFIG_KEY_2": "gc.autoPackLimit", + "GIT_CONFIG_VALUE_0": "0", + "GIT_CONFIG_VALUE_1": "0", + "GIT_CONFIG_VALUE_2": "0" + }, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "staging.git ls-remote", + "timeout": 600.0, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_LOG_LINE@stdout@h3ll0\trefs/heads/staging@@@", + "@@@STEP_LOG_END@stdout@@@" + ] + }, + { + "cmd": [ + "git", + "git", + "cherry", + "main", + "h3ll0" + ], + "cwd": "[START_DIR]/co", + "env": { + "GIT_ADVICE": "0", + "GIT_CONFIG_COUNT": "3", + "GIT_CONFIG_KEY_0": "gc.auto", + "GIT_CONFIG_KEY_1": "gc.autoDetach", + "GIT_CONFIG_KEY_2": "gc.autoPackLimit", + "GIT_CONFIG_VALUE_0": "0", + "GIT_CONFIG_VALUE_1": "0", + "GIT_CONFIG_VALUE_2": "0" + }, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "staging.git cherry", + "timeout": 300.0, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_LOG_LINE@raw_io.output_text@- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@@@", + "@@@STEP_LOG_LINE@raw_io.output_text@+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@@@", + "@@@STEP_LOG_END@raw_io.output_text@@@" + ] + }, + { + "cmd": [ + "git", + "rev-parse", + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~1" + ], + "cwd": "[START_DIR]/co", + "env": { + "GIT_ADVICE": "0", + "GIT_CONFIG_COUNT": "3", + "GIT_CONFIG_KEY_0": "gc.auto", + "GIT_CONFIG_KEY_1": "gc.autoDetach", + "GIT_CONFIG_KEY_2": "gc.autoPackLimit", + "GIT_CONFIG_VALUE_0": "0", + "GIT_CONFIG_VALUE_1": "0", + "GIT_CONFIG_VALUE_2": "0" + }, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "staging.git rev-parse", + "timeout": 300.0, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "[START_DIR]/cipd_tool/infra/tools/luci/gitiles/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/gitiles", + "log", + "-json-output", + "/path/to/tmp/json", + "-limit", + "500", + "https://pigweed.googlesource.com/pigweed/pigweed", + "..h3ll0" + ], + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "staging.log staging", + "timeout": 300.0, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_LOG_LINE@json.output@[@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"author\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_A@fake_0.email.com\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"name\": \"Fake A\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@", + "@@@STEP_LOG_LINE@json.output@ },@@@", + "@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_A@fake_0.email.com\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"name\": \"Fake A\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@", + "@@@STEP_LOG_LINE@json.output@ },@@@", + "@@@STEP_LOG_LINE@json.output@ \"id\": \"3e30158f2a7caccb7a9f6632a60011e7a44e1e5c\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"message\": \"fake A msg 0\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"83a7614b3b60951511be50db1b9561daff4bb447\"@@@", + "@@@STEP_LOG_LINE@json.output@ ],@@@", + "@@@STEP_LOG_LINE@json.output@ \"tree\": \"1b6412b24ec3add84836c8fdd1af5ac8e35b61d9\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"new_id\": \"8bea05ad53680fce6937543f0d98cd48e295b8ff\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188,@@@", + "@@@STEP_LOG_LINE@json.output@ \"new_path\": \"a.py\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0,@@@", + "@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@", + "@@@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@ \"author\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_A@fake_1.email.com\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"name\": \"Fake A\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@", + "@@@STEP_LOG_LINE@json.output@ },@@@", + "@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_A@fake_1.email.com\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"name\": \"Fake A\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@", + "@@@STEP_LOG_LINE@json.output@ },@@@", + "@@@STEP_LOG_LINE@json.output@ \"id\": \"3380b83c11e029b7291c83c44e7b1ce09d465fd1\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"message\": \"fake A msg 1\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"8675a52c73c701cb0b2c48f5ed4a9058c624e6cd\"@@@", + "@@@STEP_LOG_LINE@json.output@ ],@@@", + "@@@STEP_LOG_LINE@json.output@ \"tree\": \"a1b1e6aa501915989b45a95e1224ec2a88655eb3\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"new_id\": \"06bc4c79002f278528aaddae4e056a11f58c19ad\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188,@@@", + "@@@STEP_LOG_LINE@json.output@ \"new_path\": \"b.py\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0,@@@", + "@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@", + "@@@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@ \"author\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_A@fake_2.email.com\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"name\": \"Fake A\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@", + "@@@STEP_LOG_LINE@json.output@ },@@@", + "@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_A@fake_2.email.com\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"name\": \"Fake A\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@", + "@@@STEP_LOG_LINE@json.output@ },@@@", + "@@@STEP_LOG_LINE@json.output@ \"id\": \"363caa907186de786cb5292cd1ab7245da954815\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"message\": \"fake A msg 2\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@", + "@@@STEP_LOG_LINE@json.output@ \"255c6325c4c654e17e6b35142e3912c86f1718f2\"@@@", + "@@@STEP_LOG_LINE@json.output@ ],@@@", + "@@@STEP_LOG_LINE@json.output@ \"tree\": \"e84d4ad259e69da73d2b842e2b9709f08e8b22bd\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"new_id\": \"d7f478bf423219f2f47c1a6ed344fc597a8bf18f\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188,@@@", + "@@@STEP_LOG_LINE@json.output@ \"new_path\": \"c.py\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\",@@@", + "@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0,@@@", + "@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@", + "@@@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": [], + "name": "staging.get gerrit change numbers for staging", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [], + "name": "staging.get gerrit change numbers for staging.old revision", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_SUMMARY_TEXT@255c6325c4c654e17e6b35142e3912c86f1718f2@@@" + ] + }, + { + "cmd": [], + "name": "staging.get gerrit change numbers for staging.new revision", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_SUMMARY_TEXT@3e30158f2a7caccb7a9f6632a60011e7a44e1e5c@@@" + ] + }, + { + "cmd": [], + "name": "staging.get gerrit change numbers for staging.3 commits", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "[START_DIR]/cipd_tool/infra/tools/luci/gerrit/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/gerrit", + "change-detail", + "-host", + "https://pigweed-review.googlesource.com", + "-input", + "{\"change_id\": \"3e30158f2a7caccb7a9f6632a60011e7a44e1e5c\"}", + "-output", + "/path/to/tmp/json" + ], + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "staging.get gerrit change numbers for staging.change details for 3e30158:https://pigweed.googlesource.com/pigweed/pigweed/+/3e30158f2a7caccb7a9f6632a60011e7a44e1e5c", + "timeout": 600, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"_number\": 12345@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@STEP_LOG_LINE@json.input@{@@@", + "@@@STEP_LOG_LINE@json.input@ \"change_id\": \"3e30158f2a7caccb7a9f6632a60011e7a44e1e5c\"@@@", + "@@@STEP_LOG_LINE@json.input@}@@@", + "@@@STEP_LOG_END@json.input@@@", + "@@@STEP_LINK@gerrit link@https://pigweed-review.googlesource.com/q/3e30158f2a7caccb7a9f6632a60011e7a44e1e5c@@@" + ] + }, + { + "cmd": [ + "[START_DIR]/cipd_tool/infra/tools/luci/gerrit/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/gerrit", + "change-detail", + "-host", + "https://pigweed-review.googlesource.com", + "-input", + "{\"change_id\": \"3380b83c11e029b7291c83c44e7b1ce09d465fd1\"}", + "-output", + "/path/to/tmp/json" + ], + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "staging.get gerrit change numbers for staging.change details for 3380b83:https://pigweed.googlesource.com/pigweed/pigweed/+/3380b83c11e029b7291c83c44e7b1ce09d465fd1", + "timeout": 600, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"_number\": 12345@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@STEP_LOG_LINE@json.input@{@@@", + "@@@STEP_LOG_LINE@json.input@ \"change_id\": \"3380b83c11e029b7291c83c44e7b1ce09d465fd1\"@@@", + "@@@STEP_LOG_LINE@json.input@}@@@", + "@@@STEP_LOG_END@json.input@@@", + "@@@STEP_LINK@gerrit link@https://pigweed-review.googlesource.com/q/3380b83c11e029b7291c83c44e7b1ce09d465fd1@@@" + ] + }, + { + "cmd": [ + "[START_DIR]/cipd_tool/infra/tools/luci/gerrit/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/gerrit", + "change-detail", + "-host", + "https://pigweed-review.googlesource.com", + "-input", + "{\"change_id\": \"363caa907186de786cb5292cd1ab7245da954815\"}", + "-output", + "/path/to/tmp/json" + ], + "infra_step": true, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "staging.get gerrit change numbers for staging.change details for 363caa9:https://pigweed.googlesource.com/pigweed/pigweed/+/363caa907186de786cb5292cd1ab7245da954815", + "timeout": 600, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"_number\": 12345@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@", + "@@@STEP_LOG_LINE@json.input@{@@@", + "@@@STEP_LOG_LINE@json.input@ \"change_id\": \"363caa907186de786cb5292cd1ab7245da954815\"@@@", + "@@@STEP_LOG_LINE@json.input@}@@@", + "@@@STEP_LOG_END@json.input@@@", + "@@@STEP_LINK@gerrit link@https://pigweed-review.googlesource.com/q/363caa907186de786cb5292cd1ab7245da954815@@@" + ] + }, + { + "cmd": [ + "git", + "merge", + "h3ll0", + "--no-commit" + ], + "cwd": "[START_DIR]/co", + "env": { + "GIT_ADVICE": "0", + "GIT_CONFIG_COUNT": "3", + "GIT_CONFIG_KEY_0": "gc.auto", + "GIT_CONFIG_KEY_1": "gc.autoDetach", + "GIT_CONFIG_KEY_2": "gc.autoPackLimit", + "GIT_CONFIG_VALUE_0": "0", + "GIT_CONFIG_VALUE_1": "0", + "GIT_CONFIG_VALUE_2": "0" + }, + "luci_context": { + "realm": { + "name": "project:ci" + }, + "resultdb": { + "current_invocation": { + "name": "invocations/build:8945511751514863184", + "update_token": "token" + }, + "hostname": "rdbhost" + } + }, + "name": "staging.git merge", + "timeout": 600.0, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [], "name": "script.sh" }, { @@ -7709,7 +8126,7 @@ "cmd": [], "name": "commit message", "~followup_annotations": [ - "@@@STEP_LOG_LINE@commit message@roll: submodule, bazel-cipd/${plat}, bazel-git, project, cipd, variable-cipd, text.txt, var.txt[FOO], copy.txt, foo@@@", + "@@@STEP_LOG_LINE@commit message@roll: submodule, bazel-cipd/${plat}, bazel-git, project, cipd, variable-cipd, text.txt, var.txt[FOO], copy.txt, staging, foo@@@", "@@@STEP_LOG_LINE@commit message@@@@", "@@@STEP_LOG_LINE@commit message@submodule 255c632..3e30158 (3 commits)@@@", "@@@STEP_LOG_LINE@commit message@3e30158:https://foo-review.googlesource.com/c/submodule/+/12345 fake A msg 0@@@", @@ -7754,6 +8171,11 @@ "@@@STEP_LOG_LINE@commit message@To@@@", "@@@STEP_LOG_LINE@commit message@ new@@@", "@@@STEP_LOG_LINE@commit message@@@@", + "@@@STEP_LOG_LINE@commit message@staging 255c632..3e30158 (3 commits)@@@", + "@@@STEP_LOG_LINE@commit message@3e30158:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 0@@@", + "@@@STEP_LOG_LINE@commit message@3380b83:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 1@@@", + "@@@STEP_LOG_LINE@commit message@363caa9:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 2@@@", + "@@@STEP_LOG_LINE@commit message@@@@", "@@@STEP_LOG_LINE@commit message@foo@@@", "@@@STEP_LOG_LINE@commit message@abc: changed@@@", "@@@STEP_LOG_LINE@commit message@def: changed@@@", @@ -7769,10 +8191,12 @@ "@@@STEP_LOG_LINE@commit message@Rolled-Commits: 255c6325c4c654..3e30158f2a7cac@@@", "@@@STEP_LOG_LINE@commit message@Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed@@@", "@@@STEP_LOG_LINE@commit message@Rolled-Commits: 255c6325c4c654..3e30158f2a7cac@@@", - "@@@STEP_LOG_LINE@commit message@Roll-Count: 10@@@", + "@@@STEP_LOG_LINE@commit message@Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed@@@", + "@@@STEP_LOG_LINE@commit message@Rolled-Commits: 255c6325c4c654..3e30158f2a7cac@@@", + "@@@STEP_LOG_LINE@commit message@Roll-Count: 11@@@", "@@@STEP_LOG_END@commit message@@@", - "@@@SET_BUILD_PROPERTY@_roll_count@10@@@", - "@@@SET_BUILD_PROPERTY@_roll_names@[\"submodule\", \"bazel-cipd/${plat}\", \"bazel-git\", \"project\", \"cipd\", \"variable-cipd\", \"text.txt\", \"var.txt[FOO]\", \"copy.txt\", \"foo\"]@@@" + "@@@SET_BUILD_PROPERTY@_roll_count@11@@@", + "@@@SET_BUILD_PROPERTY@_roll_names@[\"submodule\", \"bazel-cipd/${plat}\", \"bazel-git\", \"project\", \"cipd\", \"variable-cipd\", \"text.txt\", \"var.txt[FOO]\", \"copy.txt\", \"staging\", \"foo\"]@@@" ] }, { @@ -7858,6 +8282,15 @@ }, { "cmd": [], + "name": "commit message.staging", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_SUMMARY_TEXT@{'remote': 'https://pigweed.googlesource.com/pigweed/pigweed', 'name': 'staging', 'old': '255c6325c4c654e17e6b35142e3912c86f1718f2', 'new': '3e30158f2a7caccb7a9f6632a60011e7a44e1e5c'}@@@", + "@@@SET_BUILD_PROPERTY@staging@{\"name\": \"staging\", \"new\": \"3e30158f2a7caccb7a9f6632a60011e7a44e1e5c\", \"old\": \"255c6325c4c654e17e6b35142e3912c86f1718f2\", \"remote\": \"https://pigweed.googlesource.com/pigweed/pigweed\"}@@@" + ] + }, + { + "cmd": [], "name": "commit message.foo", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@", @@ -8158,7 +8591,7 @@ "git", "commit", "-m", - "roll: submodule, bazel-cipd/${plat}, bazel-git, project, cipd, variable-cipd, text.txt, var.txt[FOO], copy.txt, foo\n\nsubmodule 255c632..3e30158 (3 commits)\n3e30158:https://foo-review.googlesource.com/c/submodule/+/12345 fake A msg 0\n3380b83:https://foo-review.googlesource.com/c/submodule/+/12345 fake A msg 1\n363caa9:https://foo-review.googlesource.com/c/submodule/+/12345 fake A msg 2\n\nbazel-cipd/${plat}\nFrom git_revision:8280651ad57cb9fb24a404cec2401040c28dec98\nTo git_revision:397a2597cdc237f3026e6143b683be4b9ab60540\n\nbazel-git 255c632..3e30158 (3 commits)\n3e30158:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 0\n3380b83:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 1\n363caa9:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 2\n\nproject 255c632..3e30158 (3 commits)\n3e30158:https://host-review.googlesource.com/c/prefix/project/+/12345 fake A msg 0\n3380b83:https://host-review.googlesource.com/c/prefix/project/+/12345 fake A msg 1\n363caa9:https://host-review.googlesource.com/c/prefix/project/+/12345 fake A msg 2\n\ncipd\nFrom git_revision:123\nTo git_revision:397a2597cdc237f3026e6143b683be4b9ab60540\n\nvariable-cipd\nFrom git_revision:0000000000000000000000000000000000000000\nTo git_revision:397a2597cdc237f3026e6143b683be4b9ab60540\n\ntext.txt 255c632..3e30158 (3 commits)\n3e30158:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 0\n3380b83:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 1\n363caa9:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 2\n\nvar.txt[FOO] 255c632..3e30158 (3 commits)\n3e30158:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 0\n3380b83:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 1\n363caa9:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 2\n\ncopy.txt\nFrom\n old\nTo\n new\n\nfoo\nabc: changed\ndef: changed\nghi: changed\n\nRolled-Repo: https://foo.googlesource.com/submodule\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRolled-Repo: https://host.googlesource.com/prefix/project\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRoll-Count: 10\nRoller-URL: https://cr-buildbucket.appspot.com/build/8945511751514863184\nCQ-Do-Not-Cancel-Tryjobs: true\nChange-Id: I28135185e8ac8c69d0b894c4be54ddbb0ea69d5c", + "roll: submodule, bazel-cipd/${plat}, bazel-git, project, cipd, variable-cipd, text.txt, var.txt[FOO], copy.txt, staging, foo\n\nsubmodule 255c632..3e30158 (3 commits)\n3e30158:https://foo-review.googlesource.com/c/submodule/+/12345 fake A msg 0\n3380b83:https://foo-review.googlesource.com/c/submodule/+/12345 fake A msg 1\n363caa9:https://foo-review.googlesource.com/c/submodule/+/12345 fake A msg 2\n\nbazel-cipd/${plat}\nFrom git_revision:8280651ad57cb9fb24a404cec2401040c28dec98\nTo git_revision:397a2597cdc237f3026e6143b683be4b9ab60540\n\nbazel-git 255c632..3e30158 (3 commits)\n3e30158:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 0\n3380b83:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 1\n363caa9:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 2\n\nproject 255c632..3e30158 (3 commits)\n3e30158:https://host-review.googlesource.com/c/prefix/project/+/12345 fake A msg 0\n3380b83:https://host-review.googlesource.com/c/prefix/project/+/12345 fake A msg 1\n363caa9:https://host-review.googlesource.com/c/prefix/project/+/12345 fake A msg 2\n\ncipd\nFrom git_revision:123\nTo git_revision:397a2597cdc237f3026e6143b683be4b9ab60540\n\nvariable-cipd\nFrom git_revision:0000000000000000000000000000000000000000\nTo git_revision:397a2597cdc237f3026e6143b683be4b9ab60540\n\ntext.txt 255c632..3e30158 (3 commits)\n3e30158:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 0\n3380b83:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 1\n363caa9:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 2\n\nvar.txt[FOO] 255c632..3e30158 (3 commits)\n3e30158:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 0\n3380b83:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 1\n363caa9:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 2\n\ncopy.txt\nFrom\n old\nTo\n new\n\nstaging 255c632..3e30158 (3 commits)\n3e30158:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 0\n3380b83:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 1\n363caa9:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12345 fake A msg 2\n\nfoo\nabc: changed\ndef: changed\nghi: changed\n\nRolled-Repo: https://foo.googlesource.com/submodule\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRolled-Repo: https://host.googlesource.com/prefix/project\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed\nRolled-Commits: 255c6325c4c654..3e30158f2a7cac\nRoll-Count: 11\nRoller-URL: https://cr-buildbucket.appspot.com/build/8945511751514863184\nCQ-Do-Not-Cancel-Tryjobs: true\nChange-Id: I28135185e8ac8c69d0b894c4be54ddbb0ea69d5c", "-a", "--no-verify" ], @@ -8196,7 +8629,7 @@ "--push-option", "nokeycheck", "https://pigweed.googlesource.com/pigweed/pigweed", - "HEAD:refs/for/main%l=Commit-Queue+1,hashtag=roll%2dbazel%2dcipd%2f$%7bplat%7d,hashtag=roll%2dbazel%2dgit,hashtag=roll%2dcipd,hashtag=roll%2dcopy%2etxt,hashtag=roll%2dfoo,hashtag=roll%2dproject,hashtag=roll%2dsubmodule,hashtag=roll%2dtext%2etxt,hashtag=roll%2dvar%2etxt%5bFOO%5d,hashtag=roll%2dvariable%2dcipd" + "HEAD:refs/for/main%l=Commit-Queue+1,hashtag=roll%2dbazel%2dcipd%2f$%7bplat%7d,hashtag=roll%2dbazel%2dgit,hashtag=roll%2dcipd,hashtag=roll%2dcopy%2etxt,hashtag=roll%2dfoo,hashtag=roll%2dproject,hashtag=roll%2dstaging,hashtag=roll%2dsubmodule,hashtag=roll%2dtext%2etxt,hashtag=roll%2dvar%2etxt%5bFOO%5d,hashtag=roll%2dvariable%2dcipd" ], "cwd": "[START_DIR]/co", "env": {
diff --git a/recipes/roller.expected/noop.json b/recipes/roller.expected/noop.json index a0f1b89..2ecefc8 100644 --- a/recipes/roller.expected/noop.json +++ b/recipes/roller.expected/noop.json
@@ -3569,6 +3569,123 @@ }, { "cmd": [], + "name": "staging" + }, + { + "cmd": [ + "git", + "ls-remote", + "--heads", + "https://pigweed.googlesource.com/pigweed/pigweed", + "staging" + ], + "env": { + "GIT_ADVICE": "0", + "GIT_CONFIG_COUNT": "3", + "GIT_CONFIG_KEY_0": "gc.auto", + "GIT_CONFIG_KEY_1": "gc.autoDetach", + "GIT_CONFIG_KEY_2": "gc.autoPackLimit", + "GIT_CONFIG_VALUE_0": "0", + "GIT_CONFIG_VALUE_1": "0", + "GIT_CONFIG_VALUE_2": "0" + }, + "name": "staging.git ls-remote", + "timeout": 600.0, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_LOG_LINE@stdout@h3ll0\trefs/heads/staging@@@", + "@@@STEP_LOG_END@stdout@@@" + ] + }, + { + "cmd": [ + "git", + "git", + "cherry", + "main", + "h3ll0" + ], + "cwd": "[START_DIR]/co", + "env": { + "GIT_ADVICE": "0", + "GIT_CONFIG_COUNT": "3", + "GIT_CONFIG_KEY_0": "gc.auto", + "GIT_CONFIG_KEY_1": "gc.autoDetach", + "GIT_CONFIG_KEY_2": "gc.autoPackLimit", + "GIT_CONFIG_VALUE_0": "0", + "GIT_CONFIG_VALUE_1": "0", + "GIT_CONFIG_VALUE_2": "0" + }, + "name": "staging.git cherry", + "timeout": 300.0, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_LOG_LINE@raw_io.output_text@- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@@@", + "@@@STEP_LOG_LINE@raw_io.output_text@+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@@@", + "@@@STEP_LOG_END@raw_io.output_text@@@" + ] + }, + { + "cmd": [ + "git", + "rev-parse", + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~1" + ], + "cwd": "[START_DIR]/co", + "env": { + "GIT_ADVICE": "0", + "GIT_CONFIG_COUNT": "3", + "GIT_CONFIG_KEY_0": "gc.auto", + "GIT_CONFIG_KEY_1": "gc.autoDetach", + "GIT_CONFIG_KEY_2": "gc.autoPackLimit", + "GIT_CONFIG_VALUE_0": "0", + "GIT_CONFIG_VALUE_1": "0", + "GIT_CONFIG_VALUE_2": "0" + }, + "name": "staging.git rev-parse", + "timeout": 300.0, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "[START_DIR]/cipd_tool/infra/tools/luci/gitiles/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/gitiles", + "log", + "-json-output", + "/path/to/tmp/json", + "-limit", + "500", + "https://pigweed.googlesource.com/pigweed/pigweed", + "..h3ll0" + ], + "infra_step": true, + "name": "staging.log staging", + "timeout": 300.0, + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_LOG_LINE@json.output@[]@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [], + "name": "staging.detected backwards roll", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@STEP_TEXT@Detected backwards roll: expected to precede h3ll0 in git history@@@" + ] + }, + { + "cmd": [], + "name": "staging.output property", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@", + "@@@SET_BUILD_PROPERTY@staging@{\"remote\": \"https://pigweed.googlesource.com/pigweed/pigweed\", \"revision\": \"h3ll0\"}@@@" + ] + }, + { + "cmd": [], "name": "nothing to roll", "~followup_annotations": [ "@@@SET_BUILD_PROPERTY@_roll_count@0@@@",
diff --git a/recipes/roller.proto b/recipes/roller.proto index 05bb170..bf46c7f 100644 --- a/recipes/roller.proto +++ b/recipes/roller.proto
@@ -23,6 +23,7 @@ import "recipe_modules/pigweed/cipd_roll/package.proto"; import "recipe_modules/pigweed/copy_roll/copy_entry.proto"; import "recipe_modules/pigweed/environment/options.proto"; +import "recipe_modules/pigweed/merge_roll/merge.proto"; import "recipe_modules/pigweed/module_bazel_lock_roll/module_bazel_lock.proto"; import "recipe_modules/pigweed/repo_roll/project.proto"; import "recipe_modules/pigweed/run_script_roll/run_script_entry.proto"; @@ -64,53 +65,56 @@ // Submodules to update. repeated recipe_modules.pigweed.submodule_roll.SubmoduleEntry submodules = 11; + // Branches to merge. + repeated recipe_modules.pigweed.merge_roll.MergeEntry merge_entries = 12; + // Txt entries to update. - repeated recipe_modules.pigweed.txt_roll.TxtEntry txt_entries = 12; + repeated recipe_modules.pigweed.txt_roll.TxtEntry txt_entries = 13; // Variable entries to update. - repeated recipe_modules.pigweed.variable_roll.VariableEntry variable_entries = 13; + repeated recipe_modules.pigweed.variable_roll.VariableEntry variable_entries = 14; // Line of text to divide the commit header and body from the footers. - string commit_divider = 14; + string commit_divider = 15; // Forge the author so rolls of single commits are attributed to the original // commit author. - bool forge_author = 15; + bool forge_author = 16; // Auto roller module options. - recipe_modules.fuchsia.auto_roller.Options auto_roller_options = 16; + recipe_modules.fuchsia.auto_roller.Options auto_roller_options = 17; // Overrides for auto roller module options. Needed when rollers are launched // via the subbuild module, which does not have a mechanism to modify an // existing roller's auto_roller_options (only can overwrite it). - recipe_modules.fuchsia.auto_roller.Options override_auto_roller_options = 17; + recipe_modules.fuchsia.auto_roller.Options override_auto_roller_options = 18; // String to use after "roll: " in first line of commit message. Default is // to auto-generate from all the rolls that modified the checkout. - string header_override = 18; + string header_override = 19; // Footers to add to the commit message. - repeated string footer = 19; + repeated string footer = 20; // Amount of time to sleep after the roll completes but before the build // exits. This allows GoB backends to synchronize before the next roll is // triggered. See b/349681242 for more. - int32 post_roll_sleep_secs = 20; + int32 post_roll_sleep_secs = 21; // We assume that if a roller is triggered by the bisector it should be // dry-run. Then the post-attribution-roller-retrigger would launch a // non-dry-run once the bisector attributes the failure to a specific change. // Setting this disables this functionality. - bool dont_dry_run_in_bisection = 21; + bool dont_dry_run_in_bisection = 22; // If checking out a top-level repository but updating something in a // submodule or other nested repository, this is the path to that nested // repository. - string subdirectory = 22; + string subdirectory = 23; // Id of the multi_roller build that launched this builder, if applicable. // String because large ints don't always get preserved through JSON. - string parent_build_id = 23; + string parent_build_id = 24; // Whether to match the destination branch to the triggering branch. This is // useful for rollers of release branches where the downstream change is on @@ -119,5 +123,5 @@ // If this is set then auto_roller_options.upstream_ref, // override_auto_roller_options.upstream_ref, and checkout_options.branch will // be overwritten. - bool match_triggering_branch = 24; + bool match_triggering_branch = 25; }
diff --git a/recipes/roller.py b/recipes/roller.py index 2d4954b..e6eda71 100644 --- a/recipes/roller.py +++ b/recipes/roller.py
@@ -51,6 +51,7 @@ from PB.recipe_modules.pigweed.bazel_roll.git_repository import GitRepository from PB.recipe_modules.pigweed.cipd_roll.package import Package from PB.recipe_modules.pigweed.copy_roll.copy_entry import CopyEntry +from PB.recipe_modules.pigweed.merge_roll.merge import MergeEntry from PB.recipe_modules.pigweed.module_bazel_lock_roll.module_bazel_lock import ( ModuleBazelLock, ) @@ -79,6 +80,7 @@ 'pigweed/cipd_roll', 'pigweed/copy_roll', 'pigweed/environment', + 'pigweed/merge_roll', 'pigweed/module_bazel_lock_roll', 'pigweed/raw_result', 'pigweed/repo_roll', @@ -200,6 +202,12 @@ api.module_bazel_lock_roll.update(checkout, lock_entry), ) + for merge_entry in props.merge_entries: + attempts += 1 + rolls.extend( + api.merge_roll.merge(checkout, merge_entry), + ) + for run_script_entry in props.run_script_entries: attempts += 1 rolls.extend( @@ -343,6 +351,7 @@ cipd_packages: SequenceOrScalar[Package] = (), cipd_variables: SequenceOrScalar[CipdVariableEntry] = (), copy_entries: SequenceOrScalar[CopyEntry] = (), + merge_entries: SequenceOrScalar[MergeEntry] = (), module_bazel_lock_entries: SequenceOrScalar[ModuleBazelLock] = (), repo_tool_projects: SequenceOrScalar[Project] = (), run_script_entries: SequenceOrScalar[RunScriptEntry] = (), @@ -364,6 +373,7 @@ props.cipd_packages.extend(ensure_list(cipd_packages)) props.cipd_variables.extend(ensure_list(cipd_variables)) props.copy_entries.extend(ensure_list(copy_entries)) + props.merge_entries.extend(ensure_list(merge_entries)) props.module_bazel_lock_entries.extend( ensure_list(module_bazel_lock_entries), ) @@ -413,6 +423,7 @@ variable='FOO', ), copy_entries=api.copy_roll.entry('copy.txt'), + merge_entries=api.merge_roll.entry('staging'), module_bazel_lock_entries=api.module_bazel_lock_roll.entry(), repo_tool_projects=api.repo_roll.project('project'), submodules=api.submodule_roll.entry('submodule'), @@ -446,6 +457,7 @@ api.step_data( 'copy.txt.read source copy.txt', api.file.read_text('abc') ), + api.gitiles.log('staging.log staging', 'A', n=0), api.repo_roll.read_step_data('project'), api.gitiles.log('project.log project', 'A', n=0), api.submodule_roll.gitmodules( @@ -625,6 +637,7 @@ variable='FOO', ), copy_entries=api.copy_roll.entry('copy.txt'), + merge_entries=api.merge_roll.entry('staging'), module_bazel_lock_entries=api.module_bazel_lock_roll.entry(), repo_tool_projects=api.repo_roll.project('project'), run_script_entries=api.run_script_roll.entry('script.sh'), @@ -668,6 +681,12 @@ 'copy.txt.read source copy.txt', api.file.read_text('new') ), expected_roll('copy.txt', old='old', new='new'), + api.gitiles.log('staging.log staging', 'A'), + expected_roll( + 'staging', + old='255c6325c4c654e17e6b35142e3912c86f1718f2', + new='3e30158f2a7caccb7a9f6632a60011e7a44e1e5c', + ), api.repo_roll.read_step_data('project'), api.gitiles.log('project.log project', 'A'), expected_roll( @@ -699,6 +718,6 @@ ), api.auto_roller.success(), api.post_check(post_process.MustRun, 'sleep 61'), - api.post_check(post_process.PropertyEquals, '_roll_count', 10), + api.post_check(post_process.PropertyEquals, '_roll_count', 11), # api.post_process(post_process.DropExpectation), )