blob: c4afb4fa8882f78663a9c79af7850fac4f1aebc8 [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",
"fuchsia/status_check",
"recipe_engine/buildbucket",
"recipe_engine/properties",
"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.status_check.test(
"default"
) + default_properties + api.buildbucket.try_build(
git_repo="https://fuchsia.googlesource.com/integration"
)