Skip to content

Conversation

@wzieba
Copy link
Contributor

@wzieba wzieba commented Mar 25, 2025

Description

This PR integrates the newest version of measure builds Gradle Plugin, which collects metrics about recently introduced support for using remote build cache locally.

Testing information

As this is the first project that integrates this new version and has remote build cache for local builds integrated, here's a set of steps to verify how the script works.

  • Before tests add local.directory = file("${System.getProperty("user.home")}/build-cache-test") to buildScan extension in your settings.gradle

Test 1: Casual run

  1. Make sure use_remote_build_cache_locally is true in developer.properties
  2. Run rm -rf $HOME/build-cache-test && ./gradlew clean -q && ./gradlew :WooCommerce:assembleWasabiDebug --scan
  3. Assert that you can see report at the end of the build starting with 🚀 Sum of estimated remote cache savings
  4. Open Gradle Scan > Performance > Task Execution > From cache
  5. Assert that "estimated remote cache savings" are close to the value in scan (look above list of tasks, label starting with "Found X tasks (...)".
  6. Look at the CMD report again, check the top "saved" task.
  7. Look for this task in scan, click on it
  8. Assert that "avoidance" has the same value in Scan as in CMD report.

Test 2: Slow run

  1. Install Network Link Conditioner
  2. Set "Very Poor Network" there
  3. Run rm -rf $HOME/build-cache-test && ./gradlew clean -q && ./gradlew :libs:fluxc-processor:compileJava (different task to save you time)
  4. Assert you can (probably) see negative avoidances and "Remote cache is estimated to have added X s to the build time" report

Images/gif

image

image

  • I have considered if this change warrants release notes and have added them to RELEASE-NOTES.txt if necessary. Use the "[Internal]" label for non-user-facing changes.

Reviewer (or Author, in the case of optional code reviews):

Please make sure these conditions are met before approving the PR, or request changes if the PR needs improvement:

  • The PR is small and has a clear, single focus, or a valid explanation is provided in the description. If needed, please request to split it into smaller PRs.
  • Ensure Adequate Unit Test Coverage: The changes are reasonably covered by unit tests or an explanation is provided in the PR description.
  • Manual Testing: The author listed all the tests they ran, including smoke tests when needed (e.g., for refactorings). The reviewer confirmed that the PR works as expected on big (tablet) and small (phone) in case of UI changes, and no regressions are added.

Run `RemoteBuildCacheMetricsReporter`
@wpmobilebot
Copy link
Collaborator

wpmobilebot commented Mar 25, 2025

Build environment changes

list
+ New Dependencies
com.gradle:develocity-gradle-plugin:3.19.2
io.ktor:ktor-client-content-negotiation-jvm:3.1.1
io.ktor:ktor-events:3.1.1
io.ktor:ktor-events-jvm:3.1.1
io.ktor:ktor-serialization:3.1.1
io.ktor:ktor-serialization-jvm:3.1.1
io.ktor:ktor-serialization-kotlinx:3.1.1
io.ktor:ktor-serialization-kotlinx-json:3.1.1
io.ktor:ktor-serialization-kotlinx-json-jvm:3.1.1
io.ktor:ktor-serialization-kotlinx-jvm:3.1.1
io.ktor:ktor-sse:3.1.1
io.ktor:ktor-sse-jvm:3.1.1
io.ktor:ktor-websocket-serialization:3.1.1
io.ktor:ktor-websocket-serialization-jvm:3.1.1
io.ktor:ktor-websockets:3.1.1
io.ktor:ktor-websockets-jvm:3.1.1
org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1
org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0
org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0
org.jetbrains.kotlinx:kotlinx-io-core:0.6.0
org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0
org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0
org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0

- Removed Dependencies
com.gradle:gradle-enterprise-gradle-plugin:3.15.1
org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21

! Upgraded Dependencies
com.automattic.android.measure-builds:com.automattic.android.measure-builds.gradle.plugin:3.2.1, (changed from 2.1.2)
com.automattic.android:measure-builds:3.2.1, (changed from 2.1.2)
io.ktor:ktor-client-cio:3.1.1, (changed from 1.6.4)
io.ktor:ktor-client-cio-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-client-core:3.1.1, (changed from 1.6.4)
io.ktor:ktor-client-core-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-client-json:3.1.1, (changed from 1.6.4)
io.ktor:ktor-client-json-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-client-logging:3.1.1, (changed from 1.6.4)
io.ktor:ktor-client-logging-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-client-serialization:3.1.1, (changed from 1.6.4)
io.ktor:ktor-client-serialization-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-http:3.1.1, (changed from 1.6.4)
io.ktor:ktor-http-cio:3.1.1, (changed from 1.6.4)
io.ktor:ktor-http-cio-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-http-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-io:3.1.1, (changed from 1.6.4)
io.ktor:ktor-io-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-network:3.1.1, (changed from 1.6.4)
io.ktor:ktor-network-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-network-tls:3.1.1, (changed from 1.6.4)
io.ktor:ktor-network-tls-jvm:3.1.1, (changed from 1.6.4)
io.ktor:ktor-utils:3.1.1, (changed from 1.6.4)
io.ktor:ktor-utils-jvm:3.1.1, (changed from 1.6.4)
org.jetbrains.kotlin:kotlin-stdlib:2.1.10, (changed from 2.0.21)
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1, (changed from 1.6.4)
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1, (changed from 1.6.4)
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1, (changed from 1.6.4)
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0, (changed from 1.6.3)
org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0, (changed from 1.6.3)
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0, (changed from 1.6.3)
org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0, (changed from 1.6.3)
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0, (changed from 1.6.3)
org.slf4j:slf4j-api:2.0.16, (changed from 1.7.30)
tree
-+--- com.automattic.android.measure-builds:com.automattic.android.measure-builds.gradle.plugin:2.1.2
-|    \--- com.automattic.android:measure-builds:2.1.2
-|         +--- com.gradle:gradle-enterprise-gradle-plugin:3.15.1
-|         +--- io.ktor:ktor-client-core:1.6.4
-|         |    \--- io.ktor:ktor-client-core-jvm:1.6.4
-|         |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21
-|         |         |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21
-|         |         |         +--- org.jetbrains:annotations:13.0 -> 23.0.0
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 2.0.21 (c)
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 2.0.21 (c)
-|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21 (c)
-|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4
-|         |         |    \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4
-|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.4
-|         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4 (c)
-|         |         |         |    \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4 (c)
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21 -> 2.0.21
-|         |         |         |    +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*)
-|         |         |         |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21
-|         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*)
-|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21 -> 2.0.21 (*)
-|         |         +--- io.ktor:ktor-http:1.6.4
-|         |         |    \--- io.ktor:ktor-http-jvm:1.6.4
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.slf4j:slf4j-api:1.7.30
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         |         \--- io.ktor:ktor-utils:1.6.4
-|         |         |              \--- io.ktor:ktor-utils-jvm:1.6.4
-|         |         |                   +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         |                   +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.30 -> 2.0.21 (*)
-|         |         |                   +--- org.slf4j:slf4j-api:1.7.30
-|         |         |                   +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         |                   +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         |                   \--- io.ktor:ktor-io:1.6.4
-|         |         |                        \--- io.ktor:ktor-io-jvm:1.6.4
-|         |         |                             +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         |                             +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         |                             +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         |                             \--- org.slf4j:slf4j-api:1.7.30
-|         |         +--- io.ktor:ktor-http-cio:1.6.4
-|         |         |    \--- io.ktor:ktor-http-cio-jvm:1.6.4
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         |         +--- io.ktor:ktor-http:1.6.4 (*)
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.slf4j:slf4j-api:1.7.30
-|         |         |         \--- io.ktor:ktor-network:1.6.4
-|         |         |              \--- io.ktor:ktor-network-jvm:1.6.4
-|         |         |                   +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         |                   +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         |                   +--- io.ktor:ktor-utils:1.6.4 (*)
-|         |         |                   +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         |                   \--- org.slf4j:slf4j-api:1.7.30
-|         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         \--- org.slf4j:slf4j-api:1.7.30
-|         +--- io.ktor:ktor-client-cio:1.6.4
-|         |    \--- io.ktor:ktor-client-cio-jvm:1.6.4
-|         |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         +--- io.ktor:ktor-client-core:1.6.4 (*)
-|         |         +--- io.ktor:ktor-http-cio:1.6.4 (*)
-|         |         +--- io.ktor:ktor-network-tls:1.6.4
-|         |         |    \--- io.ktor:ktor-network-tls-jvm:1.6.4
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.slf4j:slf4j-api:1.7.30
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         |         +--- io.ktor:ktor-network:1.6.4 (*)
-|         |         |         \--- io.ktor:ktor-utils:1.6.4 (*)
-|         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         \--- org.slf4j:slf4j-api:1.7.30
-|         +--- io.ktor:ktor-client-logging:1.6.4
-|         |    \--- io.ktor:ktor-client-logging-jvm:1.6.4
-|         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         +--- org.slf4j:slf4j-api:1.7.30
-|         |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         \--- io.ktor:ktor-client-core:1.6.4 (*)
-|         +--- io.ktor:ktor-client-serialization:1.6.4
-|         |    \--- io.ktor:ktor-client-serialization-jvm:1.6.4
-|         |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         +--- io.ktor:ktor-client-core:1.6.4 (*)
-|         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.2 -> 1.6.3
-|         |         |    \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.3
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*)
-|         |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3
-|         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 (c)
-|         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.3 (c)
-|         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3 (c)
-|         |         |         |    \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3 (c)
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22 -> 2.0.21 (*)
-|         |         |         \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3
-|         |         |              \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3
-|         |         |                   +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 -> 2.0.21 (*)
-|         |         |                   +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.3 (*)
-|         |         |                   \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22 -> 2.0.21 (*)
-|         |         +--- io.ktor:ktor-client-json:1.6.4
-|         |         |    \--- io.ktor:ktor-client-json-jvm:1.6.4
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.slf4j:slf4j-api:1.7.30
-|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30 -> 2.0.21 (*)
-|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1-native-mt -> 1.6.4 (*)
-|         |         |         \--- io.ktor:ktor-client-core:1.6.4 (*)
-|         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 2.0.21 (*)
-|         |         \--- org.slf4j:slf4j-api:1.7.30
-|         +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3 (*)
-|         \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10 -> 2.0.21 (*)
++--- com.automattic.android.measure-builds:com.automattic.android.measure-builds.gradle.plugin:3.2.1
+|    \--- com.automattic.android:measure-builds:3.2.1
+|         +--- com.gradle:develocity-gradle-plugin:3.19.2
+|         +--- io.ktor:ktor-client-core:3.1.1
+|         |    \--- io.ktor:ktor-client-core-jvm:3.1.1
+|         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1
+|         |         |    \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1
+|         |         |         +--- org.jetbrains:annotations:23.0.0
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1
+|         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.1 (c)
+|         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (c)
+|         |         |         |    \--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1 (c)
+|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.10
+|         |         |              +--- org.jetbrains:annotations:13.0 -> 23.0.0
+|         |         |              +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 2.0.21 (c)
+|         |         |              \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 2.0.21 (c)
+|         |         +--- io.ktor:ktor-http:3.1.1
+|         |         |    \--- io.ktor:ktor-http-jvm:3.1.1
+|         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         +--- io.ktor:ktor-utils:3.1.1
+|         |         |         |    \--- io.ktor:ktor-utils-jvm:3.1.1
+|         |         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         |         +--- io.ktor:ktor-io:3.1.1
+|         |         |         |         |    \--- io.ktor:ktor-io-jvm:3.1.1
+|         |         |         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         |         |         +--- org.jetbrains.kotlinx:kotlinx-io-core:0.6.0
+|         |         |         |         |         |    \--- org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0
+|         |         |         |         |         |         +--- org.jetbrains.kotlinx:kotlinx-io-bytestring:0.6.0
+|         |         |         |         |         |         |    \--- org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.6.0
+|         |         |         |         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.1.10 (*)
+|         |         |         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.1.10 (*)
+|         |         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0
+|         |         |         |         |    \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0
+|         |         |         |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0
+|         |         |         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0 (c)
+|         |         |         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (c)
+|         |         |         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0 (c)
+|         |         |         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 (c)
+|         |         |         |         |         |    +--- org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0 (c)
+|         |         |         |         |         |    \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0 (c)
+|         |         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.10 (*)
+|         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
+|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         +--- io.ktor:ktor-http-cio:3.1.1
+|         |         |    \--- io.ktor:ktor-http-cio-jvm:3.1.1
+|         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         +--- io.ktor:ktor-network:3.1.1
+|         |         |         |    \--- io.ktor:ktor-network-jvm:3.1.1
+|         |         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         |         +--- io.ktor:ktor-utils:3.1.1 (*)
+|         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         +--- io.ktor:ktor-http:3.1.1 (*)
+|         |         |         +--- io.ktor:ktor-io:3.1.1 (*)
+|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         +--- io.ktor:ktor-events:3.1.1
+|         |         |    \--- io.ktor:ktor-events-jvm:3.1.1
+|         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         +--- io.ktor:ktor-http:3.1.1 (*)
+|         |         |         +--- io.ktor:ktor-utils:3.1.1 (*)
+|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         +--- io.ktor:ktor-websocket-serialization:3.1.1
+|         |         |    \--- io.ktor:ktor-websocket-serialization-jvm:3.1.1
+|         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         +--- io.ktor:ktor-http:3.1.1 (*)
+|         |         |         +--- io.ktor:ktor-serialization:3.1.1
+|         |         |         |    \--- io.ktor:ktor-serialization-jvm:3.1.1
+|         |         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         |         +--- io.ktor:ktor-http:3.1.1 (*)
+|         |         |         |         +--- io.ktor:ktor-websockets:3.1.1
+|         |         |         |         |    \--- io.ktor:ktor-websockets-jvm:3.1.1
+|         |         |         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         |         |         +--- io.ktor:ktor-http:3.1.1 (*)
+|         |         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         +--- io.ktor:ktor-sse:3.1.1
+|         |         |    \--- io.ktor:ktor-sse-jvm:3.1.1
+|         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         +--- io.ktor:ktor-http:3.1.1 (*)
+|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         \--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1
+|         |              +--- org.slf4j:slf4j-api:1.7.32 -> 2.0.16
+|         |              +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |              +--- org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1 (*)
+|         |              \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.10 (*)
+|         +--- io.ktor:ktor-client-cio:3.1.1
+|         |    \--- io.ktor:ktor-client-cio-jvm:3.1.1
+|         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         +--- io.ktor:ktor-client-core:3.1.1 (*)
+|         |         +--- io.ktor:ktor-http-cio:3.1.1 (*)
+|         |         +--- io.ktor:ktor-websockets:3.1.1 (*)
+|         |         +--- io.ktor:ktor-network-tls:3.1.1
+|         |         |    \--- io.ktor:ktor-network-tls-jvm:3.1.1
+|         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         +--- io.ktor:ktor-http:3.1.1 (*)
+|         |         |         +--- io.ktor:ktor-network:3.1.1 (*)
+|         |         |         +--- io.ktor:ktor-utils:3.1.1 (*)
+|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         +--- io.ktor:ktor-client-logging:3.1.1
+|         |    \--- io.ktor:ktor-client-logging-jvm:3.1.1
+|         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.10.1 (*)
+|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         +--- io.ktor:ktor-client-core:3.1.1 (*)
+|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         +--- io.ktor:ktor-client-serialization:3.1.1
+|         |    \--- io.ktor:ktor-client-serialization-jvm:3.1.1
+|         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         +--- io.ktor:ktor-client-core:3.1.1 (*)
+|         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
+|         |         |    \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
+|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.10 (*)
+|         |         |         \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
+|         |         +--- io.ktor:ktor-client-json:3.1.1
+|         |         |    \--- io.ktor:ktor-client-json-jvm:3.1.1
+|         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         +--- io.ktor:ktor-client-core:3.1.1 (*)
+|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         +--- io.ktor:ktor-client-content-negotiation-jvm:3.1.1
+|         |    +--- org.slf4j:slf4j-api:2.0.16
+|         |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |    +--- io.ktor:ktor-client-core:3.1.1 (*)
+|         |    +--- io.ktor:ktor-serialization:3.1.1 (*)
+|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         +--- io.ktor:ktor-serialization-kotlinx-json:3.1.1
+|         |    \--- io.ktor:ktor-serialization-kotlinx-json-jvm:3.1.1
+|         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         +--- io.ktor:ktor-http:3.1.1 (*)
+|         |         +--- io.ktor:ktor-serialization-kotlinx:3.1.1
+|         |         |    \--- io.ktor:ktor-serialization-kotlinx-jvm:3.1.1
+|         |         |         +--- org.slf4j:slf4j-api:2.0.16
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1 (*)
+|         |         |         +--- io.ktor:ktor-http:3.1.1 (*)
+|         |         |         +--- io.ktor:ktor-serialization:3.1.1 (*)
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
+|         |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 (*)
+|         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.8.0
+|         |         |    \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.8.0
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
+|         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.10 (*)
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
+|         |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 (*)
+|         |         |         \--- org.jetbrains.kotlinx:kotlinx-io-core:0.4.0 -> 0.6.0 (*)
+|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
+|         \--- org.jetbrains.kotlin:kotlin-stdlib:2.1.10 (*)
 +--- com.autonomousapps.dependency-analysis:com.autonomousapps.dependency-analysis.gradle.plugin:2.8.0
 |    \--- com.autonomousapps:dependency-analysis-gradle-plugin:2.8.0
 |         +--- org.jetbrains.kotlin:kotlin-bom:1.9.25
-|         |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.25 -> 2.0.21 (c)
+|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.25 -> 2.1.10 (c)
-|         |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.25 -> 2.0.21 (c)
 |         +--- com.autonomousapps:graph-support:0.5
-|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*)
+|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.1.10 (*)
-|         +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.25 -> 2.0.21 (*)
+|         +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.25 -> 2.0.21
+|         |    +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.10 (*)
+|         |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21
+|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.10 (*)
 |         +--- com.squareup.moshi:moshi-kotlin:1.15.1
 |         |    +--- com.squareup.moshi:moshi:1.15.1
 |         |    |    \--- com.squareup.okio:okio:3.7.0 -> 3.9.0
 |         |    |         \--- com.squareup.okio:okio-jvm:3.9.0
-|         |    |              \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.21 (*)
+|         |    |              \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.1.10 (*)
 |         |    \--- org.jetbrains.kotlin:kotlin-reflect:1.8.21 -> 2.0.21
-|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*)
+|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.10 (*)
 |         \--- dev.zacsweers.moshix:moshi-sealed-reflect:0.25.1
 |              +--- dev.zacsweers.moshix:moshi-sealed-runtime:0.25.1
-|              |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.21 (*)
+|              |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.1.10 (*)
 |              +--- com.squareup:kotlinpoet:1.15.1
 |              |    \--- com.squareup:kotlinpoet-jvm:1.15.1
-|              |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.20 -> 2.0.21 (*)
+|              |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.20 -> 2.1.10 (*)
-|              \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.0.21 (*)
+|              \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.21 -> 2.1.10 (*)
 +--- com.android.application:com.android.application.gradle.plugin:8.8.0
 |    \--- com.android.tools.build:gradle:8.8.0
 |         +--- androidx.databinding:databinding-compiler-common:8.8.0
 |         |    \--- com.android.tools.build.jetifier:jetifier-core:1.0.0-beta10
-|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 2.0.21 (*)
+|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 2.1.10 (*)
 |         +--- com.android.tools.build:bundletool:1.17.2
-|         |    \--- org.slf4j:slf4j-api:1.7.30
+|         |    \--- org.slf4j:slf4j-api:1.7.30 -> 2.0.16
 |         \--- com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta10
-|              \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 2.0.21 (*)
+|              \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 2.1.10 (*)
 +--- org.jetbrains.kotlin.android:org.jetbrains.kotlin.android.gradle.plugin:2.1.10
 |    \--- org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.10
 |         \--- org.jetbrains.kotlin:kotlin-compiler-runner:2.1.10
-|              \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4 (*)
+|              \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4 -> 1.10.1 (*)
 +--- com.google.dagger.hilt.android:com.google.dagger.hilt.android.gradle.plugin:2.55
 |    \--- com.google.dagger:hilt-android-gradle-plugin:2.55
-|         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 (*)
+|         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.1.10 (*)
 +--- androidx.navigation.safeargs.kotlin:androidx.navigation.safeargs.kotlin.gradle.plugin:2.7.7
 |    \--- androidx.navigation:navigation-safe-args-gradle-plugin:2.7.7
 |         \--- androidx.navigation:navigation-safe-args-generator:2.7.7
-|              \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*)
+|              \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.10 (*)
 +--- com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:2.1.10-1.0.29
 |    \--- com.google.devtools.ksp:symbol-processing-gradle-plugin:2.1.10-1.0.29
 |         +--- com.google.devtools.ksp:symbol-processing-api:2.1.10-1.0.29
-|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*)
+|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.1.10 (*)
 |         \--- com.google.devtools.ksp:symbol-processing-common-deps:2.1.10-1.0.29
-|              \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.0.21 (*)
+|              \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.1.10 (*)
 \--- androidx.room:androidx.room.gradle.plugin:2.6.1
      \--- androidx.room:room-gradle-plugin:2.6.1
-          \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.21 (*)
+          \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.10 (*)

@wpmobilebot
Copy link
Collaborator

wpmobilebot commented Mar 25, 2025

📲 You can test the changes from this Pull Request in WooCommerce-Wear Android by scanning the QR code below to install the corresponding build.
App Name WooCommerce-Wear Android
Platform⌚️ Wear OS
FlavorJalapeno
Build TypeDebug
Commite3a42ac
Direct Downloadwoocommerce-wear-prototype-build-pr13835-e3a42ac.apk

@wpmobilebot
Copy link
Collaborator

wpmobilebot commented Mar 25, 2025

📲 You can test the changes from this Pull Request in WooCommerce Android by scanning the QR code below to install the corresponding build.

App Name WooCommerce Android
Platform📱 Mobile
FlavorJalapeno
Build TypeDebug
Commite3a42ac
Direct Downloadwoocommerce-prototype-build-pr13835-e3a42ac.apk

@wzieba wzieba requested a review from Copilot March 27, 2025 08:22
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR integrates the updated version of the measure builds Gradle Plugin to enhance remote build cache metrics reporting.

  • Updated the version of automattic-measure-builds in the version catalog
  • Aligns the build setup with the latest plugin features for improved metrics
Files not reviewed (1)
  • settings.gradle: Language not supported

@wzieba wzieba changed the title Integrate snapshot of measure builds plugin Update measure builds gradle plugin Mar 27, 2025
@wzieba wzieba added type: enhancement A request for an enhancement. category: tooling Anything that involves building & maintaining the project, including scripts, `Fastfile`, etc. labels Mar 27, 2025
@wzieba wzieba added this to the 22.1 milestone Mar 27, 2025
@codecov-commenter
Copy link

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 38.14%. Comparing base (e7bbff9) to head (339e38d).

Additional details and impacted files
@@            Coverage Diff            @@
##              trunk   #13835   +/-   ##
=========================================
  Coverage     38.14%   38.14%           
+ Complexity     9296     9295    -1     
=========================================
  Files          2082     2082           
  Lines        114936   114936           
  Branches      14651    14651           
=========================================
  Hits          43839    43839           
+ Misses        67105    67104    -1     
- Partials       3992     3993    +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wzieba wzieba marked this pull request as ready for review March 27, 2025 09:13
@wzieba wzieba requested a review from ParaskP7 March 27, 2025 09:13
@ParaskP7
Copy link
Contributor

Before tests add local.directory = file("${System.getProperty("user.home")}/build-cache-test") to buildScan extension in your settings.gradle

👋 @wzieba, I guess you mean buildCache extension, right? 😊

Copy link
Contributor

@ParaskP7 ParaskP7 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an awesome change @wzieba , very cool metric to have included in our builds! 🌟 x ❤️ x 🚀

Test 1: Casual run

image

image

Test 2: Slow run

image

Using :libs:fluxc-processor:compileJava didn't quite work as expected, but I did see negative savings:

rm -rf $HOME/build-cache-test && ./gradlew clean -q && ./gradlew :libs:fluxc-processor:compileJava

image


But, I then used the heavier WooCommerce:assembleWasabiDebug task, waiting a bit more yes, but this time it worked:

rm -rf $HOME/build-cache-test && ./gradlew clean -q && ./gradlew :WooCommerce:assembleWasabiDebug --scan

image

gradlePluginPortal()
maven {
url = uri("https://a8c-libs.s3.amazonaws.com/android")
content {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Praise (❤️): Thanks for choosing simplicity and flexibility over exclusivity and clarity, I don't think we need strict control over artifact resolution, ensuring that only specific groups are resolved, do we? 🤷

enable = secretProperties.getProperty("measureBuildsEnabled", "false").toBoolean()
onBuildMetricsReadyListener { report ->
SlowSlowTasksMetricsReporter.report(report)
RemoteBuildCacheMetricsReporter.report(report)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Praise (❤️): BM#55 🎉

apache-http-client-android = '4.3.5.1'
automattic-about = '1.6.0'
automattic-measure-builds = '2.1.2'
automattic-measure-builds = '3.2.0'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Praise (❤️): I can verify that this warning below is also gone (MB#57)! 🚀

WARNING: The following functionality has been deprecated and will be removed in the next major release of the Develocity Gradle plugin. Run with '-Ddevelocity.deprecation.captureOrigin=true' to see where the deprecated functionality is being used. For assistance with migration, see https://gradle.com/help/gradle-plugin-develocity-migration.

  • The deprecated "gradleEnterprise.buildScan.buildScanPublished" API has been replaced by "develocity.buildScan.buildScanPublished"
    Configuration cache entry stored.

@wzieba wzieba added the status: do not merge Dependent on another PR, ready for review but not ready for merge. label Mar 27, 2025
@wzieba
Copy link
Contributor Author

wzieba commented Mar 27, 2025

Thank you for the review @ParaskP7 ! I found one issue with average fetching time that I have to address in measure builds. I'll do this, and then merge this PR 👍

@wzieba wzieba enabled auto-merge March 27, 2025 16:35
@wzieba wzieba removed the status: do not merge Dependent on another PR, ready for review but not ready for merge. label Mar 27, 2025
@wzieba wzieba merged commit 453213c into trunk Mar 27, 2025
18 checks passed
@wzieba wzieba deleted the measure-builds-update branch March 27, 2025 17:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: tooling Anything that involves building & maintaining the project, including scripts, `Fastfile`, etc. type: enhancement A request for an enhancement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants