From ccbf6109c1a7ea0c734e70fdea7ac619fa62fe20 Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Wed, 27 Jul 2022 19:18:10 -0400 Subject: [PATCH 01/14] read sha as batch id --- .circleci/config.yml | 2 +- android/build.bzl | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f960d6840..f11dd6d3f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,7 +218,7 @@ jobs: command: | circle-android wait-for-boot - - run: bazel test --define=APPLITOOLS_KEY=${APPLITOOLS_KEY} --define=CIRCLE_BUILD_NUM=${CIRCLE_BUILD_NUM} --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_API_KEY} --config=skip-ios --config=ci -- //android/demo:android_instrumentation_test + - run: bazel test --define=APPLITOOLS_KEY=${APPLITOOLS_KEY} --define=APPLITOOLS_BATCH_ID=${CIRCLE_SHA1} --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_API_KEY} --config=skip-ios --config=ci -- //android/demo:android_instrumentation_test - store_artifacts: path: screenshots diff --git a/android/build.bzl b/android/build.bzl index b0e260a09..0dd42c72b 100644 --- a/android/build.bzl +++ b/android/build.bzl @@ -1,27 +1,27 @@ def _values_to_const(k, v): - return "public val %s = %s;" % (k, v) + return "public val %s = %s;" % (k, v) def _applitools_config_impl(ctx, **kwargs): - o = ctx.actions.declare_file("ApplitoolsConfig.kt") - head = [ - "package %s;" % ctx.attr.package, - "public object ApplitoolsConfig {", - " public val APPLITOOLS_KEY = " + ("\"" + ctx.var["APPLITOOLS_KEY"] + "\"" if "APPLITOOLS_KEY" in ctx.var else "\"UNSET\""), - " public val BATCH_ID = " + ("\"" + ctx.var["CIRCLE_BUILD_NUM"] + "\"" if "CIRCLE_BUILD_NUM" in ctx.var else "\"local\"") - ] - last = ["}"] - values = ctx.attr.values - xs = [_values_to_const(x, values[x]) for x in values] - ctx.actions.write(o, "\n".join( - head + xs + last - )) - return [DefaultInfo(files = depset([o])), OutputGroupInfo(all_files = depset([o]))] + o = ctx.actions.declare_file("ApplitoolsConfig.kt") + head = [ + "package %s;" % ctx.attr.package, + "public object ApplitoolsConfig {", + " public val APPLITOOLS_KEY = " + ("\"" + ctx.var["APPLITOOLS_KEY"] + "\"" if "APPLITOOLS_KEY" in ctx.var else "\"UNSET\""), + " public val BATCH_ID = " + ("\"" + ctx.var["APPLITOOLS_BATCH_ID"] + "\"" if "APPLITOOLS_BATCH_ID" in ctx.var else "\"local\""), + ] + last = ["}"] + values = ctx.attr.values + xs = [_values_to_const(x, values[x]) for x in values] + ctx.actions.write(o, "\n".join( + head + xs + last, + )) + return [DefaultInfo(files = depset([o])), OutputGroupInfo(all_files = depset([o]))] applitools_config = rule( - implementation = _applitools_config_impl, - output_to_genfiles = True, - attrs = { - "values": attr.string_dict(doc = "BuildConfig values, KEY -> VALUE"), - "package": attr.string(mandatory = True, doc = "package for generated class"), - }, + implementation = _applitools_config_impl, + output_to_genfiles = True, + attrs = { + "values": attr.string_dict(doc = "BuildConfig values, KEY -> VALUE"), + "package": attr.string(mandatory = True, doc = "package for generated class"), + }, ) From f413862ccf94ac5fc6b494db5e6c299933171b88 Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Wed, 27 Jul 2022 19:34:48 -0400 Subject: [PATCH 02/14] remove batch id prefix --- .../player/android/reference/demo/test/base/ApplitoolsTest.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt b/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt index 2b85eaeb0..1c57083a2 100644 --- a/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt +++ b/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt @@ -23,6 +23,8 @@ abstract class ApplitoolsTest { Eyes().apply { componentsProvider = AndroidXComponentsProvider() configuration = Configuration().apply { + appName = "Android Reference Assets" + addProperty("platform", "android") batch = batchInfo apiKey = ApplitoolsConfig.APPLITOOLS_KEY setFeatures(Feature.PIXEL_COPY_SCREENSHOT) @@ -44,6 +46,6 @@ abstract class ApplitoolsTest { fun Eyes.checkPlayer(name: String) = check(name, Target.region(ViewMatchers.withId(R.id.player_canvas))) companion object { - val batchInfo = BatchInfo("android-reference-assets@${ApplitoolsConfig.BATCH_ID}") + val batchInfo = BatchInfo(ApplitoolsConfig.BATCH_ID) } } From 268cd94f2a8536ae3dc2f6dae95b27a55643216f Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Wed, 27 Jul 2022 19:53:42 -0400 Subject: [PATCH 03/14] explicitly set api key and batch id --- .circleci/config.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f11dd6d3f..a3ba7ddbf 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,7 +218,11 @@ jobs: command: | circle-android wait-for-boot - - run: bazel test --define=APPLITOOLS_KEY=${APPLITOOLS_KEY} --define=APPLITOOLS_BATCH_ID=${CIRCLE_SHA1} --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_API_KEY} --config=skip-ios --config=ci -- //android/demo:android_instrumentation_test + - run: + command: | + export APPLITOOLS_API_KEY=${APPLITOOLS_KEY} + export APPLITOOLS_BATCH_ID=${CIRCLE_SHA1} + bazel test --define=APPLITOOLS_KEY=${APPLITOOLS_API_KEY} --define=APPLITOOLS_BATCH_ID=${APPLITOOLS_BATCH_ID} --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_API_KEY} --config=skip-ios --config=ci -- //android/demo:android_instrumentation_test - store_artifacts: path: screenshots From 3271432c7dd6ac0bacf6057abc63046a08b430d5 Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 13:21:38 -0400 Subject: [PATCH 04/14] add applitools calls --- .circleci/config.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index a3ba7ddbf..de3fadae2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -268,6 +268,20 @@ jobs: export CIRCLE_BUILD_NUMBER=$(cat .ios-build-number) npx auto shipit --only-graduate-with-release-label -vv + applitools_init: + executor: base + steps: + - run: + name: Initialize Applitools + command: curl -L -d '' -X POST "$APPLITOOLS_SERVER_URL/api/externals/github/push?apiKey=$APPLITOOLS_API_KEY&CommitSha=$CIRCLE_SHA1&BranchName=$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/$CIRCLE_BRANCH" + + applitools_cleanup: + executor: base + steps: + - run: + name: Cleanup Applitools + command: curl -X POST "$APPLITOOLS_SERVER_URL/api/externals/github/servers/github.com/commit/$CIRCLE_SHA1/complete?apiKey=$APPLITOOLS_API_KEY" -H Content-Type: application/json --data `{\"serverId\": \"github.com\", \"commitSha\": \"$CIRCLE_SHA1\"}` -v -L + workflows: build_and_test_pr: jobs: @@ -280,12 +294,17 @@ workflows: tags: ignore: /.*/ + - applitools_init: + requires: + - setup + - build: requires: - setup - build_ios: requires: + - applitools_init - setup - test: @@ -296,12 +315,20 @@ workflows: context: - applitools requires: + - applitools_init - build - coverage: requires: - build + - applitools_cleanup: + context: + - applitools + requires: + - android_test + - build_ios + build_and_test_main: when: equal: [ "", << pipeline.parameters.GHA_Action >> ] From 6784344dbfb6f437e6f399fb2d99629b6a0acd4a Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 13:23:08 -0400 Subject: [PATCH 05/14] wrap header in quotes --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index de3fadae2..4e79ded6a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -280,7 +280,7 @@ jobs: steps: - run: name: Cleanup Applitools - command: curl -X POST "$APPLITOOLS_SERVER_URL/api/externals/github/servers/github.com/commit/$CIRCLE_SHA1/complete?apiKey=$APPLITOOLS_API_KEY" -H Content-Type: application/json --data `{\"serverId\": \"github.com\", \"commitSha\": \"$CIRCLE_SHA1\"}` -v -L + command: curl -X POST "$APPLITOOLS_SERVER_URL/api/externals/github/servers/github.com/commit/$CIRCLE_SHA1/complete?apiKey=$APPLITOOLS_API_KEY" -H "Content-Type: application/json" --data `{\"serverId\": \"github.com\", \"commitSha\": \"$CIRCLE_SHA1\"}` -v -L workflows: build_and_test_pr: From 98734b9e598175c48b7278a486c0ec12d717900e Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 13:26:10 -0400 Subject: [PATCH 06/14] wrap entire command in quotes --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4e79ded6a..0135e47fe 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -280,7 +280,7 @@ jobs: steps: - run: name: Cleanup Applitools - command: curl -X POST "$APPLITOOLS_SERVER_URL/api/externals/github/servers/github.com/commit/$CIRCLE_SHA1/complete?apiKey=$APPLITOOLS_API_KEY" -H "Content-Type: application/json" --data `{\"serverId\": \"github.com\", \"commitSha\": \"$CIRCLE_SHA1\"}` -v -L + command: "curl -X POST \"$APPLITOOLS_SERVER_URL/api/externals/github/servers/github.com/commit/$CIRCLE_SHA1/complete?apiKey=$APPLITOOLS_API_KEY\" -H Content-Type: application/json --data `{\"serverId\": \"github.com\", \"commitSha\": \"$CIRCLE_SHA1\"}` -v -L" workflows: build_and_test_pr: From 6127d1173203204d6b650b326eb85018293ab4a4 Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 13:35:48 -0400 Subject: [PATCH 07/14] forgot applitools context --- .circleci/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0135e47fe..a0d5c3b1c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -295,6 +295,8 @@ workflows: ignore: /.*/ - applitools_init: + context: + - applitools requires: - setup From 626060420100e592a5ada98723a850a6054f2551 Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 14:08:14 -0400 Subject: [PATCH 08/14] don't do ios for now --- .circleci/config.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index a0d5c3b1c..2d77b0f05 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -280,7 +280,7 @@ jobs: steps: - run: name: Cleanup Applitools - command: "curl -X POST \"$APPLITOOLS_SERVER_URL/api/externals/github/servers/github.com/commit/$CIRCLE_SHA1/complete?apiKey=$APPLITOOLS_API_KEY\" -H Content-Type: application/json --data `{\"serverId\": \"github.com\", \"commitSha\": \"$CIRCLE_SHA1\"}` -v -L" + command: "curl -X POST \"$APPLITOOLS_SERVER_URL/api/externals/github/servers/github.com/commit/$CIRCLE_SHA1/complete?apiKey=$APPLITOOLS_API_KEY\" -H Content-Type: application/json --data '{\"serverId\": \"github.com\", \"commitSha\": \"$CIRCLE_SHA1\"}' -v -L" workflows: build_and_test_pr: @@ -304,10 +304,10 @@ workflows: requires: - setup - - build_ios: - requires: - - applitools_init - - setup +# - build_ios: +# requires: +# - applitools_init +# - setup - test: requires: @@ -329,7 +329,7 @@ workflows: - applitools requires: - android_test - - build_ios +# - build_ios build_and_test_main: when: From 0eac600eff2b665bd7edc97bcc6f854d5253eca7 Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 14:26:19 -0400 Subject: [PATCH 09/14] try to fix header --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2d77b0f05..bb4055dc0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -280,7 +280,7 @@ jobs: steps: - run: name: Cleanup Applitools - command: "curl -X POST \"$APPLITOOLS_SERVER_URL/api/externals/github/servers/github.com/commit/$CIRCLE_SHA1/complete?apiKey=$APPLITOOLS_API_KEY\" -H Content-Type: application/json --data '{\"serverId\": \"github.com\", \"commitSha\": \"$CIRCLE_SHA1\"}' -v -L" + command: "curl -X POST \"$APPLITOOLS_SERVER_URL/api/externals/github/servers/github.com/commit/$CIRCLE_SHA1/complete?apiKey=$APPLITOOLS_API_KEY\" -H Content-Type:application/json --data '{\"serverId\": \"github.com\", \"commitSha\": \"$CIRCLE_SHA1\"}' -v -L" workflows: build_and_test_pr: From ddb101dc2303247cfd2a4ede117c917f80040150 Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 15:07:02 -0400 Subject: [PATCH 10/14] actually set the batch ID --- .../player/android/reference/demo/test/base/ApplitoolsTest.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt b/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt index 1c57083a2..11e9dbf82 100644 --- a/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt +++ b/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt @@ -46,6 +46,8 @@ abstract class ApplitoolsTest { fun Eyes.checkPlayer(name: String) = check(name, Target.region(ViewMatchers.withId(R.id.player_canvas))) companion object { - val batchInfo = BatchInfo(ApplitoolsConfig.BATCH_ID) + val batchInfo = BatchInfo("android-reference-assets@${ApplitoolsConfig.BATCH_ID}").apply { + id = ApplitoolsConfig.BATCH_ID + } } } From c933180145a88074e4bc345077cacceffafc48bb Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 15:48:01 -0400 Subject: [PATCH 11/14] re-enable ios --- .circleci/config.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index bb4055dc0..cd68e51cb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -304,10 +304,10 @@ workflows: requires: - setup -# - build_ios: -# requires: -# - applitools_init -# - setup + - build_ios: + requires: + - applitools_init + - setup - test: requires: @@ -329,7 +329,7 @@ workflows: - applitools requires: - android_test -# - build_ios + - build_ios build_and_test_main: when: From 184fa0632d66dd89d40f34f4cecc3507e3f1567b Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 16:14:24 -0400 Subject: [PATCH 12/14] remove unused env vars --- .circleci/config.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cd68e51cb..f3eaa77af 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,11 +218,7 @@ jobs: command: | circle-android wait-for-boot - - run: - command: | - export APPLITOOLS_API_KEY=${APPLITOOLS_KEY} - export APPLITOOLS_BATCH_ID=${CIRCLE_SHA1} - bazel test --define=APPLITOOLS_KEY=${APPLITOOLS_API_KEY} --define=APPLITOOLS_BATCH_ID=${APPLITOOLS_BATCH_ID} --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_API_KEY} --config=skip-ios --config=ci -- //android/demo:android_instrumentation_test + - run: bazel test --define=APPLITOOLS_KEY=${APPLITOOLS_API_KEY} --define=APPLITOOLS_BATCH_ID=${CIRCLE_SHA1} --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_API_KEY} --config=ci -- //android/demo:android_instrumentation_test - store_artifacts: path: screenshots From 402e9437c57396a33204379965305fd6239db4ba Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 16:16:39 -0400 Subject: [PATCH 13/14] settle on standardized-ish naming for input vars --- .circleci/config.yml | 2 +- android/build.bzl | 2 +- .../android/reference/demo/test/base/ApplitoolsTest.kt | 9 +++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f3eaa77af..880736ab6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -218,7 +218,7 @@ jobs: command: | circle-android wait-for-boot - - run: bazel test --define=APPLITOOLS_KEY=${APPLITOOLS_API_KEY} --define=APPLITOOLS_BATCH_ID=${CIRCLE_SHA1} --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_API_KEY} --config=ci -- //android/demo:android_instrumentation_test + - run: bazel test --define=APPLITOOLS_API_KEY=${APPLITOOLS_API_KEY} --define=APPLITOOLS_BATCH_ID=${CIRCLE_SHA1} --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_API_KEY} --config=ci -- //android/demo:android_instrumentation_test - store_artifacts: path: screenshots diff --git a/android/build.bzl b/android/build.bzl index 0dd42c72b..403e76c32 100644 --- a/android/build.bzl +++ b/android/build.bzl @@ -6,7 +6,7 @@ def _applitools_config_impl(ctx, **kwargs): head = [ "package %s;" % ctx.attr.package, "public object ApplitoolsConfig {", - " public val APPLITOOLS_KEY = " + ("\"" + ctx.var["APPLITOOLS_KEY"] + "\"" if "APPLITOOLS_KEY" in ctx.var else "\"UNSET\""), + " public val API_KEY = " + ("\"" + ctx.var["APPLITOOLS_API_KEY"] + "\"" if "APPLITOOLS_API_KEY" in ctx.var else "\"UNSET\""), " public val BATCH_ID = " + ("\"" + ctx.var["APPLITOOLS_BATCH_ID"] + "\"" if "APPLITOOLS_BATCH_ID" in ctx.var else "\"local\""), ] last = ["}"] diff --git a/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt b/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt index 11e9dbf82..f81f0a31d 100644 --- a/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt +++ b/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt @@ -9,7 +9,8 @@ import com.applitools.eyes.android.common.config.Configuration import com.applitools.eyes.android.components.androidx.AndroidXComponentsProvider import com.applitools.eyes.android.espresso.Eyes import com.applitools.eyes.android.espresso.fluent.Target -import com.intuit.player.android.reference.demo.ApplitoolsConfig +import com.intuit.player.android.reference.demo.ApplitoolsConfig.API_KEY +import com.intuit.player.android.reference.demo.ApplitoolsConfig.BATCH_ID import com.intuit.player.android.reference.demo.R abstract class ApplitoolsTest { @@ -26,7 +27,7 @@ abstract class ApplitoolsTest { appName = "Android Reference Assets" addProperty("platform", "android") batch = batchInfo - apiKey = ApplitoolsConfig.APPLITOOLS_KEY + apiKey = API_KEY setFeatures(Feature.PIXEL_COPY_SCREENSHOT) setServerUrl("https://intuiteyesapi.applitools.com") } @@ -46,8 +47,8 @@ abstract class ApplitoolsTest { fun Eyes.checkPlayer(name: String) = check(name, Target.region(ViewMatchers.withId(R.id.player_canvas))) companion object { - val batchInfo = BatchInfo("android-reference-assets@${ApplitoolsConfig.BATCH_ID}").apply { - id = ApplitoolsConfig.BATCH_ID + val batchInfo = BatchInfo("android-reference-assets@${BATCH_ID}").apply { + id = BATCH_ID } } } From ef89c259ab39bbaa1af2bf12e559488d1eaaeb1c Mon Sep 17 00:00:00 2001 From: Jeremiah Zucker Date: Thu, 28 Jul 2022 16:27:03 -0400 Subject: [PATCH 14/14] use generated batch ID for local tests --- .../player/android/reference/demo/test/base/ApplitoolsTest.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt b/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt index f81f0a31d..0a9b2d64a 100644 --- a/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt +++ b/android/demo/src/androidTest/java/com/intuit/player/android/reference/demo/test/base/ApplitoolsTest.kt @@ -48,7 +48,8 @@ abstract class ApplitoolsTest { companion object { val batchInfo = BatchInfo("android-reference-assets@${BATCH_ID}").apply { - id = BATCH_ID + // Only manually set the batch ID if it's not a hardcoded fallback + if (BATCH_ID != "local") id = BATCH_ID } } }