diff --git a/ci/build_test_suites.py b/ci/build_test_suites.py
index 0c1d211..1064041 100644
--- a/ci/build_test_suites.py
+++ b/ci/build_test_suites.py
@@ -69,7 +69,7 @@
   build_command = base_build_command(args)
   build_command.append('general-tests')
 
-  run_command(build_command)
+  run_command(build_command, print_output=True)
 
 
 def build_affected_modules(args: argparse.Namespace):
@@ -81,9 +81,9 @@
   build_command = base_build_command(args)
   build_command.extend(modules_to_build)
 
-  run_command(build_command)
+  run_command(build_command, print_output=True)
 
-  zip_build_outputs(modules_to_build, args.dist_dir)
+  zip_build_outputs(modules_to_build, args.dist_dir, args.target_release)
 
 
 def base_build_command(args: argparse.Namespace) -> list:
@@ -102,12 +102,17 @@
   return build_command
 
 
-def run_command(args: list[str]) -> str:
+def run_command(
+    args: list[str],
+    env: Dict[Text, Text] = os.environ,
+    print_output: bool = False,
+) -> str:
   result = subprocess.run(
       args=args,
       text=True,
       capture_output=True,
       check=False,
+      env=env,
   )
   # If the process failed, print its stdout and propagate the exception.
   if not result.returncode == 0:
@@ -116,6 +121,10 @@
     print('stderr: ' + result.stderr)
 
   result.check_returncode()
+
+  if print_output:
+    print(result.stdout)
+
   return result.stdout
 
 
@@ -201,17 +210,19 @@
   return False
 
 
-def zip_build_outputs(modules_to_build: Set[Text], dist_dir: Text):
+def zip_build_outputs(
+    modules_to_build: Set[Text], dist_dir: Text, target_release: Text
+):
   src_top = os.environ.get('TOP', os.getcwd())
 
   # Call dumpvars to get the necessary things.
   # TODO(lucafarsi): Don't call soong_ui 4 times for this, --dumpvars-mode can
   # do it but it requires parsing.
-  host_out_testcases = get_soong_var('HOST_OUT_TESTCASES')
-  target_out_testcases = get_soong_var('TARGET_OUT_TESTCASES')
-  product_out = get_soong_var('PRODUCT_OUT')
-  soong_host_out = get_soong_var('SOONG_HOST_OUT')
-  host_out = get_soong_var('HOST_OUT')
+  host_out_testcases = get_soong_var('HOST_OUT_TESTCASES', target_release)
+  target_out_testcases = get_soong_var('TARGET_OUT_TESTCASES', target_release)
+  product_out = get_soong_var('PRODUCT_OUT', target_release)
+  soong_host_out = get_soong_var('SOONG_HOST_OUT', target_release)
+  host_out = get_soong_var('HOST_OUT', target_release)
 
   # Call the class to package the outputs.
   # TODO(lucafarsi): Move this code into a replaceable class.
@@ -267,12 +278,16 @@
   zip_command.append('-o')
   zip_command.append(os.path.join(dist_dir, 'general-tests.zip'))
 
-  run_command(zip_command)
+  run_command(zip_command, print_output=True)
 
 
-def get_soong_var(var: str) -> str:
+def get_soong_var(var: str, target_release: str) -> str:
+  new_env = os.environ.copy()
+  new_env['TARGET_RELEASE'] = target_release
+
   value = run_command(
-      ['./build/soong/soong_ui.bash', '--dumpvar-mode', '--abs', var]
+      ['./build/soong/soong_ui.bash', '--dumpvar-mode', '--abs', var],
+      env=new_env,
   ).strip()
   if not value:
     raise RuntimeError('Necessary soong variable ' + var + ' not found.')
