Allow conditional upload to CAS.

Originally builds were expected to generate outputs and upload them to
CAS, however there are some builds that do not generate any outputs as
they only checkout the code and run tests on it.

Change-Id: I4f02eaef85199da67942918c97da615d0a5313cd
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/44100
Commit-Queue: Godofredo Contreras <godofredoc@google.com>
Reviewed-by: Ricardo Amador <ricardoamador@google.com>
(cherry picked from commit 2239db363a2be868d541c59c0149e4d0680ec263)
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/44221
Reviewed-by: Xilai Zhang <xilaizhang@google.com>
Commit-Queue: Xilai Zhang <xilaizhang@google.com>
diff --git a/recipes/engine_v2/builder.py b/recipes/engine_v2/builder.py
index f1840c4..c0dfdbc 100644
--- a/recipes/engine_v2/builder.py
+++ b/recipes/engine_v2/builder.py
@@ -168,10 +168,11 @@
       outputs[archive_config['name']] = Archive(api, checkout, archive_config)
     api.flutter_bcid.report_stage('upload-complete')
   # Archive full build. This is inneficient but necessary for global generators.
-  full_build_hash = api.shard_util_v2.archive_full_build(
-      checkout.join('out', build.get('name')), build.get('name')
-  )
-  outputs['full_build'] = full_build_hash
+  if build.get('cas_archive', True):
+    full_build_hash = api.shard_util_v2.archive_full_build(
+        checkout.join('out', build.get('name')), build.get('name')
+    )
+    outputs['full_build'] = full_build_hash
 
 
 def Archive(api, checkout, archive_config):