Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Unified Diff: scripts/slave/recipes/infra/gae_sdk_cipd_packager.py

Issue 2355483004: Add CIPD GAE SDK recipe module and packager. (Closed)
Patch Set: Go SDKs need architecture. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: scripts/slave/recipes/infra/gae_sdk_cipd_packager.py
diff --git a/scripts/slave/recipes/infra/gae_sdk_cipd_packager.py b/scripts/slave/recipes/infra/gae_sdk_cipd_packager.py
new file mode 100644
index 0000000000000000000000000000000000000000..dbc3759b33f4f239d2a42b35585ef6d2de702e8c
--- /dev/null
+++ b/scripts/slave/recipes/infra/gae_sdk_cipd_packager.py
@@ -0,0 +1,82 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
iannucci 2016/09/30 21:05:21 This recipe should have been a separate CL
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+DEPS = [
+ 'depot_tools/cipd',
+ 'gae_sdk',
+ 'gsutil',
+ 'recipe_engine/path',
+ 'recipe_engine/python',
+ 'recipe_engine/raw_io',
+ 'recipe_engine/step',
+]
+
+
+def RunSteps(api):
+ # Determine the current GAE SDK version.
+ try:
+ version = api.gae_sdk.latest_upstream_version()
+ except api.gae_sdk.VersionParseError as e:
+ api.python.failing_step('Version Fetch',
+ 'Failed to fetch latest version: %s' % (e,))
+
+ # Make sure the CIPD client is installed.
+ api.cipd.install_client()
+
+ # Iterate over all of the GAE SDK packages and build any that don't exist.
+ version_tag = api.gae_sdk.version_tag(version)
+ pkg_outdir = api.path.mkdtemp('gae_sdk_package')
+ for plat, arch in api.gae_sdk.all_packages:
+ pkg_name = api.gae_sdk.package(plat, arch=arch)
+ with api.step.nest('Sync %s' % (pkg_name,)):
+ step = api.cipd.search(pkg_name, '%s:%s' % (version_tag))
+ if len(step.json.output['result']) > 0:
+ api.python.succeeding_step('Synced', 'Package is up to date.')
+ continue
+
+ # Create a temporary directory to build the package in.
+ pkg_base = api.gae_sdk.download_and_unpack(plat, arch, version)
+
+ # Build and register our CIPD package.
+ pkg_path = pkg_outdir.join('gae_sdk_%s_%s.pkg' % (plat, arch))
+ api.cipd.build(
+ pkg_base,
+ pkg_path,
+ pkg_name,
+ install_mode='copy',
+ )
+ api.cipd.register(
+ pkg_name,
+ pkg_path,
+ refs=[api.gae_sdk.latest_ref],
+ tags={version_tag[0]: version_tag[1]},
+ )
+
+
+def GenTests(api):
+ LATEST_YAML = '\n'.join((
+ 'release: "1.2.3"',
+ 'foo: bar',
+ 'baz:',
+ ' - qux',
+ ))
+
+ def cipd_pkg(plat, pkg_base, exists):
+ pkg_name = 'infra/gae_sdk/%s/%s' % (plat, pkg_base)
+ cipd_step = 'cipd search %s gae_sdk_version:1.2.3' % (pkg_name,)
+ instances = (2) if exists else (0)
+ return api.step_data('Sync %s.%s' % (pkg_name, cipd_step),
+ api.cipd.example_search(pkg_name, instances=instances))
+
+ yield (api.test('packages') +
+ api.step_data('gsutil GAE SDK: Get Latest',
+ api.raw_io.stream_output(LATEST_YAML, stream='stdout')) +
+ cipd_pkg('go', 'linux-amd64', False) +
+ cipd_pkg('go', 'linux-386', True) +
+ cipd_pkg('go', 'mac-amd64', True) +
+ cipd_pkg('python', 'all', False))
+
+ yield (api.test('bad_version_yaml') +
+ api.step_data('gsutil GAE SDK: Get Latest',
+ api.raw_io.stream_output('', stream='stdout')))

Powered by Google App Engine
This is Rietveld 408576698