Add internal tag "sbom" for cos-gpu-installer when releasing

To generate and upload SBOM via Louhi workflow,
we need a tag like "latest" for cos-gpu-installer.
This CL adds tag "sbom" to cos-gpu-installer
in the internal staging repo.

BUG=b/278777751
TEST=presubmit
RELEASE_NOTE=None

Change-Id: I3b84f0dd6c3eedf68e2ff8d464077a1e7660ff5a
Reviewed-on: https://cos-review.googlesource.com/c/cos/tools/+/49613
Tested-by: He Gao <hegao@google.com>
Reviewed-by: Robert Kolchmeyer <rkolchmeyer@google.com>
Cloud-Build: GCB Service account <228075978874@cloudbuild.gserviceaccount.com>
diff --git a/release/release.py b/release/release.py
index 9585e70..faa7663 100644
--- a/release/release.py
+++ b/release/release.py
@@ -13,6 +13,8 @@
 _SBOM_BUCKET_RELEASE = "gs://cos-container-sbom"
 _SBOM_SUFFIX = "_sbom.spdx.json"
 _SBOM_STAGING_CONTAINER_NAMES = ["cos-customizer", "toolbox", "cos-gpu-installer"]
+_SBOM_TAG = "sbom"
+_COS_GPU_INSTALLER_STAGING_NAME = "cos-gpu-installer"
 
 def validate_config(release_config):
   for release_container in release_config:
@@ -48,6 +50,18 @@
   for release_tag in release_tags:
     subprocess.run(["gsutil", "cp", src_path + ":" + build_tag + _SBOM_SUFFIX, dst_path + ":" + release_tag + _SBOM_SUFFIX])
 
+# Add tag for generating and uploading SBOM for cos-gpu-installer via louhi workflow.
+def add_tag_for_sbom(src_bucket, staging_container_name, release_container_name, build_tag):
+  if staging_container_name != _COS_GPU_INSTALLER_STAGING_NAME:
+    return
+
+  assert validate_src_gcr_path(src_bucket), "cannot use address {}, only gcr.io/ addresses are supported".format(src_bucket)
+
+  src_path = os.path.join(src_bucket, staging_container_name)
+  dst_path = os.path.join(src_bucket, release_container_name)
+
+  subprocess.run(["gcloud", "container", "images", "add-tag", src_path + ":" + build_tag, dst_path + ":" + _SBOM_TAG, "-q"])
+
 def verify_and_release(src_bucket, dst_buckets, release):
   with open('release/release-versions.yaml', 'r') as file:
     try:
@@ -64,6 +78,7 @@
           for dst_bucket in dst_buckets:
             copy_container_image(src_bucket, dst_bucket, staging_container_name, release_container_name, build_tag, release_tags)
           copy_container_sbom(staging_container_name, release_container_name, build_tag, release_tags)
+          add_tag_for_sbom(src_bucket, staging_container_name, release_container_name, build_tag)
 
     except yaml.YAMLError as ex:
       raise Exception("Invalid YAML config: %s" % str(ex))