containers: Add utility to ensure gcloud helper is configured.

We need to use gcloud credentials to push to GCS container
registries.  These aren't necessarily configured by default on a
given host, so we need to ensure that the configuration is correct
before we push images.

BUG=b:209543161
TEST=manual build_api call.

Change-Id: I6fc1b1ae8c01452630e0b6e768519034283e506b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/3321290
Tested-by: Sean McAllister <smcallis@google.com>
Auto-Submit: Sean McAllister <smcallis@google.com>
Reviewed-by: Jared Loucks <jaredloucks@google.com>
Reviewed-by: Derek Beckett <dbeckett@chromium.org>
Commit-Queue: Sean McAllister <smcallis@google.com>
diff --git a/test/docker/util.sh b/test/docker/util.sh
index 98f58ed..ddb01a1 100644
--- a/test/docker/util.sh
+++ b/test/docker/util.sh
@@ -112,6 +112,17 @@
   readonly server_name docker_file chroot_arg tags
 }
 
+ensure_gcloud_helpers() {
+  # @FUNCTION: ensure_gcloud_helpers
+  # @USAGE: ensure_gcloud_helpers
+  # @DESCRIPTION:
+  #   Setup gcloud credential helpers for Google Cloud container registries.
+
+  # First call sets up default GCR registries, second call sets up
+  # Artifact Registry registries.
+  sudo gcloud --quiet --verbosity=error auth configure-docker
+  sudo gcloud --quiet --verbosity=error auth configure-docker us-docker.pkg.dev
+}
 
 build_image() {
   # @FUNCTION: build_image
@@ -139,6 +150,7 @@
   sudo docker build "${args[@]}"
 
   # Push image to register
+  ensure_gcloud_helpers
   sudo docker login -u oauth2accesstoken -p "$(gcloud auth print-access-token)" "https://${registry_name}"
   sudo docker push --all-tags "${image_path}"