blob: 6f0db4cd59385e369e1be33f70400f0c842b718b [file] [log] [blame]
# Copyright 2021 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.
# Compiles platform specific executables for the scripts in dart_ci/builder
# and uploads them as CIPD package 'dart/ci/builder_scripts/${platform}'.
from recipe_engine.post_process import Filter
DEPS = [
'depot_tools/git',
'recipe_engine/buildbucket',
'recipe_engine/cipd',
'recipe_engine/context',
'recipe_engine/path',
'recipe_engine/step',
]
def RunSteps(api):
# Checkout dart_ci version to build.
revision = api.buildbucket.gitiles_commit.id or 'HEAD'
got_revision = api.git.checkout(
url='https://dart.googlesource.com/dart_ci',
ref=revision,
set_got_revision=True)
source_path = api.path['start_dir'].join('dart_ci')
# Get the Dart SDK to be used to compile the scripts.
packages_path = api.path['cache'].join('cipd_packages')
ensure_file = api.cipd.EnsureFile()
# Cannot use ensure_tool here because of dartbug.com/46364
ensure_file.add_package('dart/dart-sdk/${platform}', 'version:2.13.1')
api.cipd.ensure(packages_path, ensure_file)
dart = packages_path.join('dart-sdk', 'bin', 'dart')
# Compile scripts.
output_root = api.path.mkdtemp()
output_file = output_root.join('update_results_database')
input_file = source_path.join('builder', 'bin',
'update_results_database.dart')
pub_cache = api.path.mkdtemp()
with api.context(
cwd=source_path.join('builder'), env={'PUB_CACHE': pub_cache}):
api.step('pub get', [dart, 'pub', 'get'])
api.step('compile script',
[dart, 'compile', 'exe', input_file, '-o', output_file])
# Create CIPD package from scripts.
builder = str(api.buildbucket.builder_name)
package_name = 'dart/ci/builder_scripts/mac-arm64' if builder.endswith(
'mac-arm64') else 'dart/ci/builder_scripts/${platform}'
pkg = api.cipd.PackageDefinition(package_name, output_root, 'copy')
pkg.add_file(output_file)
api.cipd.create_from_pkg(
pkg, tags={'git_revision': got_revision}, refs=['latest'])
def GenTests(api):
yield api.test(
'basic',
api.buildbucket.ci_build(builder='dart-ci-scripts-linux'),
)
yield api.test(
'basic-mac-arm64',
api.buildbucket.ci_build(builder='dart-ci-scripts-mac-arm64'),
)
yield api.test(
'basic-with-revision',
api.buildbucket.ci_build(
builder='dart-ci-scripts', revision='refs/changes/20/203220/9'),
)