diff --git a/release/BUILD b/release/BUILD
new file mode 100644
index 0000000..1f3a7f3
--- /dev/null
+++ b/release/BUILD
@@ -0,0 +1,14 @@
+py_library(
+    name = "release_lib",
+    srcs = ["release.py"],
+    data = ["release-versions.yaml"],
+    srcs_version = "PY3",
+)
+
+py_binary(
+    name = "release",
+    srcs = ["release.py"],
+    data = ["release-versions.yaml"],
+    python_version = "PY3",
+    deps = [":release_lib"],
+)
diff --git a/release/cloudbuild.yaml b/release/cloudbuild.yaml
new file mode 100644
index 0000000..503a7a6
--- /dev/null
+++ b/release/cloudbuild.yaml
@@ -0,0 +1,4 @@
+steps:
+- name: 'gcr.io/cloud-marketplace-containers/google/bazel'
+  entrypoint: 'bazel'
+  args: ['run', ':release', $_BUILD_GCR, $_RELEASE_GCR]
diff --git a/release/release-versions.yaml b/release/release-versions.yaml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/release/release-versions.yaml
diff --git a/release/release.py b/release/release.py
new file mode 100644
index 0000000..4882e47
--- /dev/null
+++ b/release/release.py
@@ -0,0 +1,55 @@
+"""
+Release script invoked from git trigger upon submission of changes to release-versions.yaml config file to the cos/tools GoB repo
+
+Parses contents of release-versions.yaml file and copies release candidates to gcr.io/cos-tools
+"""
+
+import sys
+import yaml
+import subprocess
+import os
+
+def validate_config(release_config):
+  for release_container in release_config:
+    for key in ["container_name", "build_commit", "release_tags"]:
+      assert key in release_container, "missing {} in entry {}".format(key, release_container)
+
+def validate_gcr_path(path):
+  return len(path) > len("gcr.io/") and path[:len("gcr.io/")] == "gcr.io/"
+
+def copy_container_image(src_bucket, dst_bucket, container_name, build_tag, release_tags):
+  assert validate_gcr_path(src_bucket), "cannot use address {}, only gcr.io/ addresses are supported".format(src_bucket)
+  assert validate_gcr_path(dst_bucket), "cannot use address {}, only gcr.io/ addresses are supported".format(dst_bucket)
+
+  src_path = os.path.join(src_bucket, container_name)
+  dst_path = os.path.join(dst_bucket, container_name)
+
+  for release_tag in release_tags:
+    subprocess.run(["gcloud", "container", "images", "add-tag", src_path + ":" + build_tag, dst_path + ":" + release_tag])
+
+def release(src_bucket, dst_bucket):
+  with open('release/release-versions.yaml', 'r') as file:
+    try:
+      release_config = yaml.safe_load(file)
+      validate_config(release_config)
+
+      for release_container in release_config:
+        container_name = release_container["container_name"]
+        build_tag = release_container["build_commit"]
+        release_tags = release_container["release_tags"]
+        copy_container_image(src_bucket, dst_bucket, container_name, build_tag, release_tags)
+
+    except yaml.YAMLError as ex:
+      raise Exception("Invalid YAML config: %s" % str(ex))
+
+def main():
+  if len(sys.argv) != 3:
+    sys.Exit("sample use: ./release_script <source_gcr_path> <destination_gcr_path>")
+
+  src_bucket = sys.argv[1]
+  dst_bucket = sys.argv[2]
+
+  release(src_bucket, dst_bucket)
+
+if __name__ == '__main__':
+  main()
