Fix cloud build failures showing up as success

1. Fix return codes for top level cloudbuild
2. Fix Dockerfile location for cos_gpu_installer_v1
3. Fix workdir for toolbox dockerfile

BUG=b/183723138

Change-Id: I74956d8d150ad5ae614bb6183e638a813f0613d3
Reviewed-on: https://cos-review.googlesource.com/c/cos/tools/+/17371
Cloud-Build: GCB Service account <228075978874@cloudbuild.gserviceaccount.com>
Reviewed-by: Robert Kolchmeyer <rkolchmeyer@google.com>
Tested-by: Arnav Kansal <rnv@google.com>
diff --git a/cloudbuild.yaml b/cloudbuild.yaml
index ffbf59b..83ecb86 100644
--- a/cloudbuild.yaml
+++ b/cloudbuild.yaml
@@ -4,6 +4,10 @@
   args:
   - '-c'
   - |
+    # File that contains failures.
+    failure_file=failure.log
+    touch ${failure_file}
+
     for d in src/cmd/*/; do
       config="${d}cloudbuild.yaml"
       if [[ ! -f "${config}" ]]; then
@@ -12,8 +16,24 @@
 
       echo "Building $d ... "
       (
-        gcloud builds submit --config=${config} --substitutions=_OUTPUT_PROJECT=${_OUTPUT_PROJECT},TAG_NAME=${COMMIT_SHA}
+        logfile="${d::-1}.log"
+        gcloud builds submit --config=${config} --substitutions=_OUTPUT_PROJECT=${_OUTPUT_PROJECT},TAG_NAME=${COMMIT_SHA} > ${logfile} 2>&1
+        if [[ $? -ne 0 ]]; then
+          echo "$d failed" | tee -a ${failure_file}
+          cat ${logfile}
+        fi
       ) &
     done
     wait
+
+    # Check if there is any failure.
+    if [[ -s ${failure_file} ]]; then
+      echo
+      echo "Some builds failed:"
+      cat ${failure_file}
+      echo "Exiting."
+      exit 1
+    fi
+    echo "All builds succeeded."
+
 timeout: 3600s
diff --git a/src/cmd/cos_gpu_installer_v1/cloudbuild.yaml b/src/cmd/cos_gpu_installer_v1/cloudbuild.yaml
index 69b353f..3a3b5c3 100644
--- a/src/cmd/cos_gpu_installer_v1/cloudbuild.yaml
+++ b/src/cmd/cos_gpu_installer_v1/cloudbuild.yaml
@@ -23,7 +23,7 @@
   - 'gcr.io/${_OUTPUT_PROJECT}/cos-gpu-installer-v1:latest'
   - '-t'
   - 'gcr.io/${_OUTPUT_PROJECT}/cos-gpu-installer-v1:${TAG_NAME}'
-  - 'cos-gpu-installer-docker/'
+  - 'src/cmd/cos_gpu_installer_v1/cos-gpu-installer-docker/'
 images:
 - 'gcr.io/${_OUTPUT_PROJECT}/cos-gpu-installer-v1:latest'
 - 'gcr.io/${_OUTPUT_PROJECT}/cos-gpu-installer-v1:${TAG_NAME}'
diff --git a/src/cmd/toolbox/cloudbuild.yaml b/src/cmd/toolbox/cloudbuild.yaml
index 171095d..b08eb6d 100644
--- a/src/cmd/toolbox/cloudbuild.yaml
+++ b/src/cmd/toolbox/cloudbuild.yaml
@@ -21,5 +21,5 @@
 # image after building it, because a subsequent `docker push` won't find the
 # image locally.
 - name: 'gcr.io/cloud-builders/docker'
-  args: ['buildx', 'build', '--platform', 'linux/amd64,linux/arm64', '-t', 'gcr.io/${_OUTPUT_PROJECT}/toolbox:latest', '-t', 'gcr.io/${_OUTPUT_PROJECT}/toolbox:${TAG_NAME}', '--push', '.']
+  args: ['buildx', 'build', '--platform', 'linux/amd64,linux/arm64', '-f', 'src/cmd/toolbox/Dockerfile', '-t', 'gcr.io/${_OUTPUT_PROJECT}/toolbox:latest', '-t', 'gcr.io/${_OUTPUT_PROJECT}/toolbox:${TAG_NAME}', '--push', 'src/cmd/toolbox']
 timeout: 1800s