'BUILD_CONFIG': 'Release', }, 'upload': { 'bucket': 'v8-android', 'path': lambda api: ('v8_android_perf_rel/full-build-linux_%s.zip' % api.properties['revision']), }, 'set_component_rev': {'name': 'src/v8', 'rev_str': '%s'}, } }, }) from recipe_engine.recipe_api import Property PROPERTIES = { 'mastername': Property(), 'buildername': Property(), 'revision': Property(default='HEAD'), } def _RunStepsInternal(api, mastername, buildername, revision): bot_config = BUILDERS[mastername][buildername] droid = api.chromium_android default_kwargs = { 'REPO_URL': 'svn://svn-mirror.golo.chromium.org/chrome/trunk/src', 'INTERNAL': False, 'REPO_NAME': 'src', 'BUILD_CONFIG': bot_config.get('target', 'Debug'), } default_kwargs.update(bot_config.get('kwargs', {}))
'recipe_engine/path', 'recipe_engine/platform', 'recipe_engine/step', 'recipe_engine/version', ] from recipe_engine.recipe_api import Property from recipe_engine.config import ConfigGroup, Single PROPERTIES = { '$depot_tools/osx_sdk': Property( help='Properties specifically for the infra osx_sdk module.', param_name='sdk_properties', kind=ConfigGroup( # pylint: disable=line-too-long # XCode build version number. Internally maps to an XCode build id like # '9c40b'. See # # https://chrome-infra-packages.appspot.com/p/infra_internal/ios/xcode/mac/+/ # # For an up to date list of the latest SDK builds. sdk_version=Single(str), # The CIPD toolchain tool package and version toolchain_pkg=Single(str), toolchain_ver=Single(str), ), default={}, ) }
# Copyright 2014 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. DEPS = [ 'build', 'isolate', 'recipe_engine/context', 'recipe_engine/json', 'recipe_engine/path', 'recipe_engine/platform', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/raw_io', 'recipe_engine/step', 'swarming_client', 'test_utils', ] from recipe_engine.recipe_api import Property PROPERTIES = { 'show_shards_in_collect_step': Property(default=False, kind=bool), 'show_isolated_out_in_collect_step': Property(default=True, kind=bool), } # TODO(phajdan.jr): provide coverage (http://crbug.com/693058). DISABLE_STRICT_COVERAGE = True
# Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. from recipe_engine.recipe_api import Property DEPS = [ 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/raw_io', 'recipe_engine/step', ] PROPERTIES = { # New Gerrit patch properties. 'patch_storage': Property(kind=str, default=None), 'patch_gerrit_url': Property(kind=str, default=None), 'patch_repository_url': Property(kind=str, default=None), 'patch_ref': Property(kind=str, default=None), # Non-patch jobs properties. 'repository': Property(kind=str, help='Full url to a Git repository', default=None, param_name='repo_url'), 'refspec': Property(kind=str, help='Refspec to checkout', default='master'),
# Copyright 2018 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. DEPS = [ 'recipe_engine/cipd', 'recipe_engine/context', 'recipe_engine/json', 'recipe_engine/path', 'recipe_engine/step', ] from recipe_engine.recipe_api import Property from recipe_engine.config import ConfigGroup, Single PROPERTIES = { '$depot_tools/windows_sdk': Property( help='Properties specifically for the infra windows_sdk module.', param_name='sdk_properties', kind=ConfigGroup( # CIPD instance ID, tag or ref for the Windows SDK version. version=Single(str), ), default={'version': 'uploaded:2018-06-13'}, ) }
"""Recipe for testing Recipes.""" from recipe_engine.recipe_api import Property DEPS = [ 'infra/jiri', 'recipe_engine/context', 'recipe_engine/path', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/step', ] PROPERTIES = { 'patch_gerrit_url': Property(kind=str, help='Gerrit host', default=None), 'patch_project': Property(kind=str, help='Gerrit project', default=None), 'patch_ref': Property(kind=str, help='Gerrit patch ref', default=None), 'project': Property(kind=str, help='Jiri remote manifest project', default=None), 'manifest': Property(kind=str, help='Jiri manifest to use'), 'remote': Property(kind=str, help='Remote manifest repository'), } def RunSteps(api, patch_gerrit_url, patch_project, patch_ref, project, manifest, remote):
# a different roll (typically a manual roll) has already rolled past it. REGEXP_ROLL_TOO_OLD = r'Already at .+ refusing to roll backwards to .+' ROLL_STATUS_IN_PROGRESS = 'In progress' ROLL_STATUS_STOPPED = 'Stopped' ROLL_STATUS_IDLE = 'Idle' ROLL_STATUSES = ( (REGEXP_ISSUE_CREATED, ROLL_STATUS_IN_PROGRESS), (REGEXP_ROLL_ACTIVE, ROLL_STATUS_IN_PROGRESS), (REGEXP_ROLL_STOPPED, ROLL_STATUS_STOPPED), (REGEXP_ROLL_TOO_OLD, ROLL_STATUS_IDLE), ) from recipe_engine.recipe_api import Property PROPERTIES = { "test_arb_is_stopped": Property(default=None), } def RunSteps(api, test_arb_is_stopped): # Check out Chrome. gclient_cfg = api.gclient.make_config() s = gclient_cfg.solutions.add() s.name = 'src' s.url = 'https://chromium.googlesource.com/chromium/src.git' gclient_cfg.got_revision_mapping['src/third_party/skia'] = 'got_revision' api.gclient.checkout(gclient_config=gclient_cfg) src_dir = api.path['checkout'] api.step('git config user.name',
return repo_path PROJECTS_TO_TRY = [ 'build', 'build_limited_scripts_slave', 'recipe_engine', 'depot_tools', ] PROPERTIES = { 'patches': Property(kind=str, param_name='patches_raw', default="", help="Patches to apply. Format is" "project1:https://url.to.codereview/123456#ps01 where" "url.to.codereview is the address of the code review site" ", 123456 is the issue number, and ps01 is the patchset" "number"), # This recipe can be used as a tryjob by setting the rietveld, issue, and # patchset properties, like a normal tryjob. If those are set, it will use # those, as well as any data sent in the regular properties, as patches to # apply. "rietveld": Property(kind=str, default="", help="The Rietveld instance the issue is from"), "issue": Property(kind=str, default=None, help="The Rietveld issue number to pull data from"),
from recipe_engine.recipe_api import Property DEPS = [ 'recipe_engine/buildbucket', 'recipe_engine/context', 'recipe_engine/file', 'recipe_engine/path', 'recipe_engine/platform', 'recipe_engine/properties', 'recipe_engine/step', ] PROPERTIES = { 'repository': Property( kind=str, default='https://android.googlesource.com/platform/external/perfetto'), } ARTIFACTS = ['trace_processor_shell'] def RunSteps(api, repository): builder_cache_dir = api.path['cache'].join('builder') src_dir = builder_cache_dir.join('perfetto') # Fetch the Perfetto repo. with api.step.nest('git'), api.context(infra_steps=True): api.file.ensure_directory('ensure source dir', src_dir) api.step('init', ['git', 'init', src_dir]) with api.context(cwd=src_dir):
DEPS = [ 'depot_tools/osx_sdk', 'depot_tools/tryserver', 'infra_checkout', 'recipe_engine/buildbucket', 'recipe_engine/context', 'recipe_engine/json', 'recipe_engine/platform', 'recipe_engine/properties', 'recipe_engine/runtime', ] PROPERTIES = { 'GOARCH': Property(default=None, kind=str, help="set GOARCH environment variable for go build+test"), } LUCI_GO_PATH_IN_INFRA = 'infra/go/src/go.chromium.org/luci' def RunSteps(api, GOARCH): co = api.infra_checkout.checkout('luci_go', patch_root=LUCI_GO_PATH_IN_INFRA) is_presubmit = 'presubmit' in api.buildbucket.builder_name.lower() if is_presubmit: co.commit_change() co.gclient_runhooks() env = {}
'recipe_engine/file', 'recipe_engine/json', 'recipe_engine/path', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/runtime', 'recipe_engine/step', 'depot_tools/bot_update', 'depot_tools/gclient', 'depot_tools/git', 'depot_tools/tryserver', ] PROPERTIES = { 'upstream_id': Property(kind=str, help='ID of the project to patch'), 'upstream_url': Property(kind=str, help='URL of git repo of the upstream project'), 'downstream_id': Property( kind=str, help=( 'ID of the project that includes |upstream_id| in its recipes.cfg ' 'to be tested with upstream patch')), 'downstream_url': Property(kind=str, help='URL of the git repo of the downstream project'), } NONTRIVIAL_ROLL_FOOTER = 'Recipe-Nontrivial-Roll' MANUAL_CHANGE_FOOTER = 'Recipe-Manual-Change' BYPASS_FOOTER = 'Recipe-Tryjob-Bypass-Reason'
'gclient_apply_config': ['android', 'perf'], 'bucket': 'chrome-perf', }, 'android_webview_arm64_aosp_perf_bisect': { 'recipe_config': 'main_builder_rel_mb', 'gclient_apply_config': ['android', 'perf'], 'bucket': 'chrome-perf', 'webview': True, }, }, }, }) from recipe_engine.recipe_api import Property PROPERTIES = {'mastername': Property(), 'buildername': Property(),} def RunSteps(api, mastername, buildername): master_dict = BUILDERS.get(mastername, {}) bot_config = master_dict.get('builders', {}).get(buildername) # The following lines configures android bisect bot to to checkout codes, # executes runhooks, provisions devices and runs legacy bisect script. recipe_config = bot_config.get('recipe_config', 'perf') kwargs = { 'REPO_NAME': 'src', 'REPO_URL': REPO_URL, 'INTERNAL': False, 'BUILD_CONFIG': 'Release', 'TARGET_PLATFORM': 'android', } kwargs.update(bot_config.get('kwargs', {}))
DEPS = [ 'build/gitiles', 'build/url', 'depot_tools/bot_update', 'depot_tools/gclient', 'depot_tools/gsutil', 'recipe_engine/path', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/raw_io', 'recipe_engine/step', ] PROPERTIES = { 'buildername': Property(kind=str), } BUILDERS = freeze({ 'V8 lkgr finder': { 'project': 'v8', 'allowed_lag': 4, 'lkgr_status_gs_path': 'chromium-v8/lkgr-status', 'repo': 'https://chromium.googlesource.com/v8/v8', 'ref': 'refs/heads/lkgr', }, }) def RunSteps(api, buildername): botconfig = BUILDERS[buildername]
# Copyright 2017 The LUCI Authors. All rights reserved. # Use of this source code is governed under the Apache License, Version 2.0 # that can be found in the LICENSE file. DEPS = [ 'properties', ] from recipe_engine.recipe_api import Property from recipe_engine.config import ConfigGroup, Single PROPERTIES = { '$recipe_engine/runtime': Property( help='Properties specifically for the runtime module', param_name='properties', kind=ConfigGroup( # Whether build is running on LUCI stack. is_luci=Single(bool), # Whether build is running in experimental mode. is_experimental=Single(bool), ), default={}, ), }
from recipe_engine.config import List, Single, ConfigList, ConfigGroup from recipe_engine.recipe_api import Property DEPS = [ 'cipd', 'json', 'path', 'platform', 'properties', 'service_account', 'step', ] PROPERTIES = { 'use_pkg': Property(default=False, kind=bool), 'pkg_files': Property(default=(), kind=List(str)), 'pkg_dirs': Property(default=(), kind=ConfigList(lambda: ConfigGroup( path=Single(str), exclusions=List(str), ))), 'pkg_vars': Property(default=None, kind=dict), 'ver_files': Property(default=(), kind=List(str)), 'install_mode': Property(default=None), 'refs':
'recipe_engine/buildbucket', 'recipe_engine/context', 'recipe_engine/file', 'recipe_engine/json', 'recipe_engine/path', 'recipe_engine/properties', 'recipe_engine/raw_io', 'recipe_engine/step', 'depot_tools/gclient', 'depot_tools/git', 'depot_tools/gitiles', ] PROPERTIES = { 'source_repo': Property(help='The URL of the repo to be mirrored with submodules'), 'target_repo': Property(help='The URL of the mirror repo to be built/maintained'), } COMMIT_USERNAME = '******' COMMIT_EMAIL_ADDRESS = \ '*****@*****.**' SHA1_RE = re.compile(r'[0-9a-fA-F]{40}') def RunSteps(api, source_repo, target_repo): _, source_project = api.gitiles.parse_repo_url(source_repo) # NOTE: This name must match the definition in cr-buildbucket.cfg. Do not
'recipe_engine/step', 'depot_tools/git', 'file', 'gsutil', 'zip', ] from recipe_engine.recipe_api import Property REPO_URL='https://chromium.googlesource.com/chromium/tools/depot_tools.git' DOC_UPLOAD_URL='gs://chrome-infra-docs/flat/depot_tools/docs/' PROPERTIES = { 'revision': Property( kind=str, help='The revision of depot_tools to check out'), } def RunSteps(api, revision): # prepare the output dir and zip paths api.path['checkout'] = api.path['slave_build'].join('depot_tools') zip_out = api.path['slave_build'].join('depot_tools.zip') with api.step.nest('clean workspace'): api.file.rmtree('rm depot_tools', api.path['checkout']) api.file.remove('rm depot_tools.zip', zip_out, ok_ret=(0, 1)) # generate the new directory api.step('mk depot_tools', ['mkdir', api.path['checkout']]) with api.step.nest('clone + checkout'):
'lkgr_status_gs_path': 'chromium-v8/chromium-lkgr-status', }, 'V8 lkgr finder': { 'project': 'v8', 'repo': 'https://chromium.googlesource.com/v8/v8', 'ref': 'refs/heads/lkgr', 'lkgr_status_gs_path': 'chromium-v8/lkgr-status', 'allowed_lag': 4, }, }) PROPERTIES = { 'project': Property( kind=str, default=None, help='Project for which LKGR should be calculated.', ), 'repo': Property(kind=str, default=None, help='Repo for which LKGR should be updated.'), 'ref': Property(kind=str, default=None, help='LKGR ref to update.'), 'config': Property( kind=dict, default=None, help='Config dict to use. See infra.services.lkgr_finder for more.', ), 'lkgr_status_gs_path':
DEPS = [ 'cipd', 'recipe_engine/context', 'recipe_engine/json', 'recipe_engine/path', 'recipe_engine/raw_io', 'recipe_engine/step', ] from recipe_engine.recipe_api import Property PROPERTIES = { 'isolate_server': Property(default='https://isolateserver.appspot.com'), }
DEPS = [ 'recipe_engine/json', 'recipe_engine/platform', 'recipe_engine/properties', 'recipe_engine/raw_io', 'recipe_engine/step', ] from recipe_engine.recipe_api import Property PROPERTIES = { 'buildername': Property(default=None), 'buildnumber': Property(default=None), }
from recipe_engine.recipe_api import Property DEPS = [ 'depot_tools/gclient', 'recipe_engine/context', 'recipe_engine/file', 'recipe_engine/json', 'recipe_engine/path', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/step', ] PROPERTIES = { 'target_repo': Property(kind=str, help='Which repo to work with. Required.'), 'cycle_time_sec': Property(default=10 * 60, kind=Single((int, float)), help='How long to run gsubtreed for.'), 'max_error_count': Property(default=5, kind=Single((int, float)), help='How many consecutive errors are tolerated before gsubtreed ' 'quits with error'), } def RunSteps(api, target_repo, cycle_time_sec, max_error_count): assert target_repo cycle_time_sec = max(0, int(cycle_time_sec))
'chromium_tests', 'filter', 'findit', 'depot_tools/gclient', 'recipe_engine/json', 'recipe_engine/path', 'recipe_engine/platform', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/raw_io', 'recipe_engine/step', ] PROPERTIES = { 'target_mastername': Property(kind=str, help='The target master to match compile config to.'), 'target_buildername': Property(kind=str, help='The target builder to match compile config to.'), 'good_revision': Property(kind=str, help='The last known good chromium revision.'), 'bad_revision': Property(kind=str, help='The first known bad chromium revision.'), 'compile_targets': Property(kind=List(basestring), default=None, help='The failed compile targets, eg: browser_tests, ' 'obj/path/to/source.o, gen/path/to/generated.cc, etc.'), 'buildbucket': Property(default=None, help='The buildbucket property in which we can find build id. ' 'We need to use build id to get compile_targets.'),
'recipe_engine/buildbucket', 'recipe_engine/cipd', 'recipe_engine/context', 'recipe_engine/file', 'recipe_engine/json', 'recipe_engine/path', 'recipe_engine/platform', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/raw_io', 'recipe_engine/step', 'windows_sdk', ] PROPERTIES = { 'repository': Property(kind=str, default='https://gn.googlesource.com/gn'), } def RunSteps(api, repository): src_dir = api.path['start_dir'].join('gn') with api.step.nest('git'), api.context(infra_steps=True): api.step('init', ['git', 'init', src_dir]) with api.context(cwd=src_dir): build_input = api.buildbucket.build_input ref = (build_input.gitiles_commit.id if build_input.gitiles_commit else 'refs/heads/master') # Fetch tags so `git describe` works. api.step('fetch', ['git', 'fetch', '--tags', repository, ref])
'api_level': 23, 'partition_size': '1024M', 'sdcard_size': '512M', 'provision_settings': { 'disable_location': True, 'disable_network': True, 'disable_system_chrome': True, 'remove_system_webview': True, }, 'sample_gtest_suite': ['sample_test', 'sample_isolate_file'], } } }) PROPERTIES = { 'buildername': Property(), 'mastername': Property(), } def RunSteps(api, mastername, buildername): builder = BUILDERS[mastername][buildername] api.chromium_android.configure_from_properties( builder['config'], REPO_NAME='src', REPO_URL=REPO_URL, INTERNAL=False, BUILD_CONFIG=builder['target']) api.emulator.set_config('base_config') api.gclient.set_config('chromium')
'depot_tools/bot_update', 'depot_tools/cipd', 'depot_tools/gclient', 'recipe_engine/context', 'recipe_engine/file', 'recipe_engine/path', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/runtime', 'recipe_engine/step', ] PROPERTIES = { 'workflow': Property( kind=str, help=('Path to the dataflow workflow you would like to ' 'execute. Will be appended to the infra checkout path. ' 'The path should begin with "packages/dataflow".')), 'job_name': Property( kind=str, help=('Name that appears on the Dataflow console. Must match ' 'the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])')), 'gcp_project_id': Property( kind=str, help=('Name of Google Cloud Project under which the Dataflow ' 'job will be executed.')), 'num_workers': Property( kind=Single((int, float)), default=3, help=('Number of GCE instances used to run job.')), 'timeout': Property(
'recipe_engine/platform', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/raw_io', 'recipe_engine/runtime', 'recipe_engine/source_manifest', 'recipe_engine/step', 'rietveld', 'tryserver', ] from recipe_engine.recipe_api import Property PROPERTIES = { # Gerrit patches will have all properties about them prefixed with patch_. 'patch_issue': Property(default=None), # TODO(tandrii): add kind=int. 'patch_set': Property(default=None), # TODO(tandrii): add kind=int. 'patch_gerrit_url': Property(default=None), 'patch_repository_url': Property(default=None), 'patch_ref': Property(default=None), # TODO(tAndrii): remove legacy Gerrit fields. # Legacy Gerrit fields. 'event.patchSet.ref': Property(default=None, param_name='gerrit_ref'), # Rietveld-only fields. 'rietveld': Property(default=None), # Stores Url of Rietveld server. 'issue': Property(default=None), 'patchset': Property(default=None), 'repository': Property(default=None),
'REPO_NAME': 'src', 'REPO_URL': 'https://chromium.googlesource.com/chromium/src.git', 'Internal': False, } kwargs.update( recipe_config.get('chromium_config_kwargs', {'BUILD_CONFIG': 'Release'})) api.chromium_android.configure_from_properties('base_config', **kwargs) api.chromium.set_config('base_config', **kwargs) api.chromium.apply_config(recipe_config['chromium_config']) api.chromium.apply_config('clobber') PROPERTIES = { 'buildername': Property(), } def RunSteps(api, buildername): recipe_config = DETERMINISTIC_BUILDERS[buildername] enable_isolate = True targets = recipe_config.get('targets', ['chromium_swarm_tests']) if recipe_config.get('chromium_config_kwargs'): target_platform = recipe_config['chromium_config_kwargs'].get( 'TARGET_PLATFORM') else: target_platform = recipe_config.get('platform') if target_platform in ('linux', 'mac', 'win'):
# Copyright 2017 The LUCI Authors. All rights reserved. # Use of this source code is governed under the Apache License, Version 2.0 # that can be found in the LICENSE file. from recipe_engine.recipe_api import Property DEPS = [ 'platform', 'properties', 'raw_io', 'service_account', 'path', ] PROPERTIES = { 'key_path': Property(), 'scopes': Property(), 'lifetime_sec': Property(), } def RunSteps(api, key_path, scopes, lifetime_sec): if key_path: account = api.service_account.from_credentials_json(key_path) else: account = api.service_account.default() account.get_access_token(scopes, lifetime_sec) def GenTests(api): def props(key_path=None, scopes=None, lifetime_sec=None):
'isolate', 'recipe_engine/json', 'recipe_engine/path', 'recipe_engine/platform', 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/raw_io', 'recipe_engine/step', 'swarming', 'test_results', 'test_utils', ] PROPERTIES = { 'target_mastername': Property(kind=str, help='The target master to match compile config to.'), 'target_testername': Property( kind=str, help='The target tester to match test config to. If the tests are run ' 'on a builder, just treat the builder as a tester.'), 'good_revision': Property(kind=str, help='The last known good revision.'), 'bad_revision': Property(kind=str, help='The first known good revision.'), 'tests': Property( kind=Dict(value_type=list), help='The failed tests, the test name should be full name, e.g.: {' ' "browser_tests": [' ' "suite.test1", "suite.test2"'
from recipe_engine.recipe_api import Property DEPS = [ 'infra/goma', 'infra/jiri', 'recipe_engine/context', 'recipe_engine/path', 'recipe_engine/properties', 'recipe_engine/raw_io', 'recipe_engine/step', ] PROPERTIES = { 'category': Property(kind=str, help='Build category', default=None), 'patch_gerrit_url': Property(kind=str, help='Gerrit host', default=None), 'patch_project': Property(kind=str, help='Gerrit project', default=None), 'patch_ref': Property(kind=str, help='Gerrit patch ref', default=None), 'patch_storage': Property(kind=str, help='Patch location', default=None), 'patch_repository_url': Property(kind=str, help='URL to a Git repository', default=None), 'project': Property(kind=str, help='Jiri remote manifest project', default=None), 'manifest': Property(kind=str, help='Jiri manifest to use'), 'remote':