Prepares the release builder for packaging runs.
Packaging will filter targets based on scheduler and filter targeting
will now consider the git_ref.
Bug: https://github.com/flutter/flutter/issues/115489
Change-Id: I3d7dd52a2f35ff9ea71fd6b84939bcfebe03e600
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/36821
Reviewed-by: Yusuf Mohsinally <mohsinally@google.com>
Commit-Queue: Godofredo Contreras <godofredoc@google.com>
diff --git a/recipes/release/release_builder.expected/basic_linux.json b/recipes/release/release_builder.expected/basic_linux_beta.json
similarity index 91%
copy from recipes/release/release_builder.expected/basic_linux.json
copy to recipes/release/release_builder.expected/basic_linux_beta.json
index 26709ed..531b0da 100644
--- a/recipes/release/release_builder.expected/basic_linux.json
+++ b/recipes/release/release_builder.expected/basic_linux_beta.json
@@ -35,7 +35,6 @@
"git",
"fetch",
"origin",
- "main",
"--recurse-submodules",
"--progress",
"--tags"
@@ -67,7 +66,7 @@
"git",
"checkout",
"-f",
- "FETCH_HEAD"
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
],
"cwd": "[START_DIR]/mirrors/engine",
"infra_step": true,
@@ -266,6 +265,14 @@
"@@@STEP_LOG_LINE@json.output@ \"release_build\": true@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"recipe\": \"engine/something\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"linux packaging one\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"$flutter/osx_sdk\": \"{\\\"sdk_version\\\": \\\"14a5294e\\\"}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"recipe\": \"release/something\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"scheduler\": \"release\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ ]@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
@@ -297,7 +304,7 @@
}
},
"name": "launch builds.schedule",
- "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/main\"}, \"priority\": 25, \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}, \"build\": {\"name\": \"linux one\", \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}}, \"recipe\": \"engine/something\"}, \"environment\": \"Staging\", \"recipe\": \"engine/something\", \"repository\": \"engine\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+ "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"try\", \"builder\": \"Linux Engine Drone\", \"project\": \"proj\"}, \"exe\": {\"cipdVersion\": \"refs/heads/main\"}, \"experimental\": \"NO\", \"experiments\": {\"luci.buildbucket.parent_tracking\": false}, \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"gerritChanges\": [{\"change\": \"123456\", \"host\": \"flutter-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"mirrors/engine\"}], \"gitilesCommit\": {\"host\": \"flutter.googlesource.com\", \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"project\": \"mirrors/engine\", \"ref\": \"refs/heads/beta\"}, \"priority\": 25, \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}, \"build\": {\"name\": \"linux packaging one\", \"properties\": {\"$flutter/osx_sdk\": {\"sdk_version\": \"14a5294e\"}}, \"recipe\": \"release/something\", \"scheduler\": \"release\"}, \"environment\": \"Staging\", \"recipe\": \"release/something\", \"repository\": \"engine\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"swarming\": {\"parentRunId\": \"fake-task-id\"}, \"tags\": [{\"key\": \"cq_experimental\", \"value\": \"false\"}, {\"key\": \"parent_buildbucket_id\", \"value\": \"8945511751514863184\"}, {\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
@@ -344,7 +351,7 @@
"@@@STEP_LOG_LINE@request@ \"host\": \"flutter.googlesource.com\", @@@",
"@@@STEP_LOG_LINE@request@ \"id\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", @@@",
"@@@STEP_LOG_LINE@request@ \"project\": \"mirrors/engine\", @@@",
- "@@@STEP_LOG_LINE@request@ \"ref\": \"refs/heads/main\"@@@",
+ "@@@STEP_LOG_LINE@request@ \"ref\": \"refs/heads/beta\"@@@",
"@@@STEP_LOG_LINE@request@ }, @@@",
"@@@STEP_LOG_LINE@request@ \"priority\": 25, @@@",
"@@@STEP_LOG_LINE@request@ \"properties\": {@@@",
@@ -352,16 +359,17 @@
"@@@STEP_LOG_LINE@request@ \"sdk_version\": \"14a5294e\"@@@",
"@@@STEP_LOG_LINE@request@ }, @@@",
"@@@STEP_LOG_LINE@request@ \"build\": {@@@",
- "@@@STEP_LOG_LINE@request@ \"name\": \"linux one\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"name\": \"linux packaging one\", @@@",
"@@@STEP_LOG_LINE@request@ \"properties\": {@@@",
"@@@STEP_LOG_LINE@request@ \"$flutter/osx_sdk\": {@@@",
"@@@STEP_LOG_LINE@request@ \"sdk_version\": \"14a5294e\"@@@",
"@@@STEP_LOG_LINE@request@ }@@@",
"@@@STEP_LOG_LINE@request@ }, @@@",
- "@@@STEP_LOG_LINE@request@ \"recipe\": \"engine/something\"@@@",
+ "@@@STEP_LOG_LINE@request@ \"recipe\": \"release/something\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"scheduler\": \"release\"@@@",
"@@@STEP_LOG_LINE@request@ }, @@@",
"@@@STEP_LOG_LINE@request@ \"environment\": \"Staging\", @@@",
- "@@@STEP_LOG_LINE@request@ \"recipe\": \"engine/something\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"recipe\": \"release/something\", @@@",
"@@@STEP_LOG_LINE@request@ \"repository\": \"engine\"@@@",
"@@@STEP_LOG_LINE@request@ }, @@@",
"@@@STEP_LOG_LINE@request@ \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
@@ -522,7 +530,7 @@
},
{
"cmd": [],
- "name": "display builds.linux one",
+ "name": "display builds.linux packaging one",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LINK@8945511751514863186@https://cr-buildbucket.appspot.com/build/8945511751514863186@@@"
diff --git a/recipes/release/release_builder.expected/basic_linux.json b/recipes/release/release_builder.expected/basic_linux_main.json
similarity index 96%
rename from recipes/release/release_builder.expected/basic_linux.json
rename to recipes/release/release_builder.expected/basic_linux_main.json
index 26709ed..a0e9c92 100644
--- a/recipes/release/release_builder.expected/basic_linux.json
+++ b/recipes/release/release_builder.expected/basic_linux_main.json
@@ -266,6 +266,14 @@
"@@@STEP_LOG_LINE@json.output@ \"release_build\": true@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"recipe\": \"engine/something\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"linux packaging one\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"$flutter/osx_sdk\": \"{\\\"sdk_version\\\": \\\"14a5294e\\\"}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"recipe\": \"release/something\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"scheduler\": \"release\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ ]@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
diff --git a/recipes/release/release_builder.py b/recipes/release/release_builder.py
index a4dfb55..34b3623 100644
--- a/recipes/release/release_builder.py
+++ b/recipes/release/release_builder.py
@@ -38,6 +38,23 @@
PROPERTIES = InputProperties
ENV_PROPERTIES = EnvProperties
+RELEASE_CHANNELS = ('refs/heads/beta', 'refs/heads/stable')
+
+
+def ShouldRun(api, git_ref, target):
+ """Validates if a target should run based on platform, channel and repo."""
+ # Postsubmit for engine and flutter repositories.
+ if (target.get('properties', {}).get('release_build', False) and
+ target['name'].lower().startswith(api.platform.name) and
+ (git_ref not in RELEASE_CHANNELS)):
+ return True
+ # Packaging for the flutter repository.
+ if (target.get('scheduler') == 'release' and
+ target["name"].lower().startswith(api.platform.name) and
+ (git_ref in RELEASE_CHANNELS)):
+ return True
+ return False
+
def RunSteps(api, properties, env_properties):
repository = api.buildbucket.gitiles_commit.project
@@ -60,11 +77,10 @@
build_results = []
with api.step.nest('launch builds') as presentation:
for target in ci_yaml.json.output['targets']:
- if target.get("properties", {}).get("release_build", False) and (
- target["name"].lower().startswith(api.platform.name)):
+ if ShouldRun(api, git_ref, target):
target = api.shard_util_v2.pre_process_properties(target)
tasks.update(api.shard_util_v2.schedule(
- [target, ], target["recipe"], presentation))
+ [target, ], target['recipe'], presentation))
with api.step.nest('collect builds') as presentation:
build_results = api.shard_util_v2.collect(tasks, presentation)
@@ -83,25 +99,41 @@
status="SUCCESS",
)
tasks_dict = {'targets': [
- {'name': 'linux one', 'recipe': 'engine/something',
- 'properties': {'release_build': True, '$flutter/osx_sdk': '{"sdk_version": "14a5294e"}'}
- }]
+ {
+ 'name': 'linux one',
+ 'recipe': 'engine/something',
+ 'properties': {
+ 'release_build': True,
+ '$flutter/osx_sdk': '{"sdk_version": "14a5294e"}'
+ },
+ },
+ {
+ 'name': 'linux packaging one',
+ 'recipe': 'release/something',
+ 'scheduler': 'release',
+ 'properties': {
+ '$flutter/osx_sdk': '{"sdk_version": "14a5294e"}'
+ }
+ }
+ ]
}
- yield api.test(
- 'basic_linux',
- api.platform.name('linux'),
- api.properties(environment='Staging', repository='engine'),
- api.buildbucket.try_build(
- project='proj',
- builder='try-builder',
- git_repo='https://flutter.googlesource.com/mirrors/engine',
- revision='a' * 40,
- build_number=123,
- ),
- api.shard_util_v2.child_build_steps(
- subbuilds=[try_subbuild1],
- launch_step="launch builds",
- collect_step="collect builds",
- ),
- api.step_data('read ci yaml.parse', api.json.output(tasks_dict))
+ for git_ref in ['main', 'beta']:
+ yield api.test(
+ 'basic_linux_%s' % git_ref,
+ api.platform.name('linux'),
+ api.properties(environment='Staging', repository='engine'),
+ api.buildbucket.try_build(
+ project='proj',
+ builder='try-builder',
+ git_repo='https://flutter.googlesource.com/mirrors/engine',
+ revision='a' * 40,
+ build_number=123,
+ git_ref='refs/heads/%s' % git_ref,
+ ),
+ api.shard_util_v2.child_build_steps(
+ subbuilds=[try_subbuild1],
+ launch_step="launch builds",
+ collect_step="collect builds",
+ ),
+ api.step_data('read ci yaml.parse', api.json.output(tasks_dict))
)