blob: 0a34160fad5d914efe2eb204747fab1e6ec9dbc2 [file] [log] [blame]
# 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')