blob: 418b3c9d19d5304b22951095c25c658d1b432fc9 [file] [log] [blame]
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from recipe_engine import recipe_api
class BuildSetLookupApi(recipe_api.RecipeApi):
"""APIs for retrieving the build ID for a given buildset and builder ID."""
def __init__(self, *args, **kwargs):
super(BuildSetLookupApi, self).__init__(*args, **kwargs)
self._buildset_lookup_tool = None
def __call__(self, step_name, builder, buildset, leak_to=None):
"""Retrieves the build ID for a given buildset and builder ID.
Args:
step_name (str): The name of the step produced.
builder (str): A fully-qualified buildbucket v2 builder ID,
consisting of <project>/<project-namespaced bucket>/<builder name>. For example:
'fuchsia/ci/garnet-x64-release-qemu_kvm'.
buildset (str): A fully-qualified buildbucket V2 buildset tag,
consisting of commit/gitiles/<host>/<repo>/+/<commit ID>. For example:
'commit/gitiles/fuchsia.googlesource.com/topaz/+/e3127e0bd6d57da7a5959ee70eb0a396590e6d53'.
leak_to (Path): If leak_to is provided, it must be a Path object. This path will be used in
place of a random temporary file, and the file will not be deleted at the end of the step.
"""
assert self._buildset_lookup_tool
step_args = [
self._buildset_lookup_tool,
'-builder-id',
builder,
'-build-set',
buildset,
]
return self.m.step(
step_name, step_args, stdout=self.m.raw_io.output(leak_to=leak_to))
def ensure_buildset_lookup(self, version=None):
"""Ensures that the buildset lookup tool is installed."""
with self.m.step.nest('ensure_buildset_lookup'):
with self.m.context(infra_steps=True):
pkgs = self.m.cipd.EnsureFile()
pkgs.add_package('fuchsia/infra/buildsetlookup/${platform}', version or 'latest')
cipd_dir = self.m.path['start_dir'].join('cipd', 'buildsetlookup')
self.m.cipd.ensure(cipd_dir, pkgs)
self._buildset_lookup_tool = cipd_dir.join('buildsetlookup')
return self._buildset_lookup_tool
@property
def buildset_lookup_tool(self):
return self._buildset_lookup_tool