crosvm/infra/recipes/build_chromeos_hatch.py
Zihan Chen 6005604ca0 infra/recipes: Use cherry-pick instead of checkout in crOS builder
This should allow the builder to turn green as it will contain all
reverts and patches only existed in crOS tree when trying to build.

This is not sufficient to be used as presubmit because it relies on
the target change being merged already.

TEST=led get-builder luci.crosvm.ci:chromeos_hatch | led edit-cr-cl https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4004343 | led edit-recipe-bundle | led launch
BUG=b:240692674

Change-Id: I3a4183bfbd007d82803e5a33a56f357868972e80
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4004343
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Zihan Chen <zihanchen@google.com>
Auto-Submit: Zihan Chen <zihanchen@google.com>
2022-11-03 23:42:00 +00:00

80 lines
2.1 KiB
Python

# Copyright 2022 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from recipe_engine.post_process import Filter
PYTHON_VERSION_COMPATIBILITY = "PY3"
DEPS = [
"crosvm",
"depot_tools/depot_tools",
"recipe_engine/buildbucket",
"recipe_engine/context",
"recipe_engine/properties",
"recipe_engine/step",
]
def RunSteps(api):
with api.crosvm.cros_container_build_context():
gitilies = api.buildbucket.build.input.gitiles_commit
upstream_url = "https://chromium.googlesource.com/crosvm/crosvm"
revision = gitilies.id or "upstream/main"
api.crosvm.step_in_container(
"Sync repo",
[
"repo",
"sync",
"-j8",
"--current-branch",
],
cros=True,
)
api.crosvm.step_in_container(
"Add crosvm upstream remote",
["git", "remote", "add", "upstream", upstream_url],
cros=True,
)
api.crosvm.step_in_container(
"Unshallow crosvm", ["git", "fetch", "cros", "--unshallow"], cros=True
)
api.crosvm.step_in_container(
"Fetch upstream crosvm", ["git", "fetch", "upstream"], cros=True
)
# Apply unmerged commit from upstream to crOS tree
api.crosvm.step_in_container(
"Cherry-pick from upstream revision", ["git", "cherry-pick", ".." + revision], cros=True
)
api.crosvm.step_in_container(
"cros-workon-hatch crosvm",
["cros_sdk", "cros-workon-hatch", "start", "crosvm"],
cros=True,
)
api.crosvm.step_in_container(
"Build crosvm",
[
"cros_sdk",
"emerge-hatch",
"crosvm",
],
cros=True,
)
def GenTests(api):
filter_steps = Filter("Build crosvm")
yield (
api.test(
"build_chromeos_hatch",
api.buildbucket.ci_build(project="crosvm/crosvm"),
)
+ api.post_process(filter_steps)
)