| # Copyright 2019 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. |
| """Recipe for pushing goma docker images and deploying them to k8s.""" |
| |
| from recipe_engine.recipe_api import Property |
| |
| DEPS = [ |
| 'fuchsia/docker', |
| 'fuchsia/gcloud', |
| 'recipe_engine/buildbucket', |
| 'recipe_engine/properties', |
| 'recipe_engine/raw_io', |
| 'recipe_engine/step', |
| 'recipe_engine/time', |
| 'recipe_engine/url', |
| ] |
| |
| PROPERTIES = { |
| 'domain': |
| Property( |
| kind=str, |
| help='domain name of container registry', |
| default='gcr.io'), |
| 'project': |
| Property( |
| kind=str, help='name of goma cloud project', |
| default='goma-fuchsia'), |
| 'upstream_tag': |
| Property( |
| kind=str, |
| help='container tag used to pull images from upstream', |
| default='latest'), |
| } |
| |
| SERVER_IMAGES = [ |
| 'auth-server', |
| 'cache-server', |
| 'cmd-server', |
| 'exec-server', |
| 'execlog-server', |
| 'file-server', |
| 'frontend', |
| 'gomatools', |
| ] |
| |
| UPSTREAM_PROJECT_ID = 'cxx-compiler-service' |
| |
| |
| def generate_time_stamp(api): |
| return "{:%Y%m%d_%H%M%S}".format(api.time.utcnow()) |
| |
| |
| def RunSteps(api, domain, project, upstream_tag): |
| timestamp = generate_time_stamp(api) |
| api.gcloud('config', 'set', 'project', project) |
| |
| # Pull prebuilts from goma-teams' container registry and push them to |
| # project's container registry. |
| for item in SERVER_IMAGES: |
| upstream_container_tag = api.url.join(domain, UPSTREAM_PROJECT_ID, item) |
| container_tag = api.url.join(domain, project, item) |
| api.docker( |
| 'pull', |
| upstream_container_tag, |
| step_name='pull %s from upstream' % item) |
| api.docker( |
| 'tag', upstream_container_tag, container_tag, step_name='tag %s' % item) |
| api.docker( |
| 'tag', |
| upstream_container_tag + ':' + upstream_tag, |
| container_tag + ':' + timestamp, |
| step_name='tag %s with timestamp' % item) |
| api.docker('push', container_tag, step_name='push %s' % item) |
| api.docker( |
| 'push', |
| container_tag + ':' + timestamp, |
| step_name='push %s with timestamp' % item) |
| |
| |
| def GenTests(api): |
| default_properties = api.properties( |
| domain='gcr.io', |
| cluster='rbe-dev', |
| project='goma-fuchsia', |
| upstream_tag='latest') |
| |
| yield api.test('default') + default_properties + api.buildbucket.try_build( |
| git_repo='https://fuchsia.googlesource.com/integration') |