Next Workshop: Maven Build Cache Deep Dive – June 9th (9am – 12pm PDT). Learn more and register here.
Gradle Enterprise 2022.2
Gradle Enterprise 2022.2 brings general availability of Predictive Test Selection for Gradle and Apache Maven™ builds, providing faster developer feedback by executing only the most relevant tests for a change. Maven users can also now benefit from Build Cache acceleration for non-clean builds.
Read on for more details of these and other new features.
Use version 1.14.1 of the Gradle Enterprise Maven extension, version 3.10.1 of the Gradle Enterprise Gradle plugin, version 2.3.2 of the Gradle Enterprise Test Distribution Gradle plugin, version 1.6.9 of the Gradle Enterprise Test Distribution Agent, and version 12.3 of the Gradle Enterprise Build Cache Node for optimal usage of Gradle Enterprise.
Gradle Enterprise Predictive Test Selection increases developer productivity by automatically and intelligently selecting and executing the subset of tests that are most relevant to a code change, providing faster feedback. It is now available for Gradle and Apache Maven™ builds and is complementary to other Gradle Enterprise build acceleration features such as Build Caching and Test Distribution.
Gradle Enterprise develops a predictive model by observing code changes and test outcomes from your Build Scan data. It combines ongoing learning about your project structure and tests with training from millions of test executions across many projects in order to make accurate predictions.
The Build Scan of a Predictive Test Selection enabled build indicates which tests were selected and which weren’t, along with the reason why. It also indicates how much time was saved by skipping the not selected tests.
Usage across sets of builds can be observed via the Predictive Test Selection dashboard, which visualizes the impact for each test task or goal.
Gradle Enterprise also provides a Predictive Test Selection Simulator that facilitates making an informed decision about which projects and builds should enable Predictive Test Selection.
See the Predictive Test Selection User Manual to learn more and get started with Predictive Test Selection.
Previously, the Maven Build Cache was completely disabled when the “clean” lifecycle phase was not part of the Maven invocation. This meant that outputs of prior builds were not loaded from cache and therefore such builds did not benefit from build caching at all. With this release, build cache usage automatically switches to read-only mode when “clean” is omitted allowing the build to benefit from build cache acceleration.
For such “non-clean” builds, writing cache entries remains disabled. Non-clean Maven builds often yield inconsistent output, which makes them unsuitable for writing to the build cache. Both the remote and the local cache now have a “StoreEnabled” setting that is captured in the Build Scan™.
The configuration cache is a Gradle build tool feature that significantly improves build performance by caching the result of the configuration phase and reusing this for subsequent builds. Using the configuration cache, Gradle can skip the configuration phase entirely when nothing that affects the build configuration, such as build scripts, has changed.
The “Configuration” tab of the “Performance” page of Gradle Build Scans now conveys how much time was taken to write to or read from the configuration cache, depending on whether the configuration cache is enabled for the build, and if the build is storing to or loading from the configuration cache.
With Gradle 2022.1, a new installation method was introduced. It is now possible to use this method to install Gradle Enterprise to standalone hosts or Kubernetes clusters that cannot connect to the internet via an “airgap installation”. It requires downloading all of the installation materials as a single bundle on an internet-connected host, then transferring that bundle to the installation destination.
Previously, only PostgreSQL 12 was supported when employing a user-managed database. Now, PostgreSQL 13 or 14 may also be used.
Runtime network connectivity requirements for Helm-based installations
Starting with 2022.2, Gradle Enterprise instances installed with Helm validate their licenses with Gradle over the internet. Once running, Gradle Enterprise will periodically check for license updates. Before upgrading a Helm-based installation to Gradle Enterprise 2022.2, make sure that https://harbor.gradle.com is reachable from the Gradle Enterprise instance’s network.
See Gradle Enterprise Helm Standalone Installation Manual -> Network connectivity requirements or Gradle Enterprise Helm Kubernetes Installation Manual -> Network connectivity requirements for more information.
If your installation is not internet-connected, you will need to convert your installation to an airgap installation. Please contact your customer success representative if you need to do this.
Temporarily degraded performance due to data reindexing
Upon upgrading, a data reindexing process will be initiated in the background with Gradle Enterprise being usable for its duration. CPU usage will be increased and performance may be slightly degraded. For large installations storing many build scans, the reindexing process may take several hours. During this time, some builds may be omitted from cross-build data visualizations. Recent builds are prioritized, making their data available sooner.
- [FIX] - Background data processing may overwhelm server with few CPUs
- [FIX] - Predictive Test Selection Simulator reports serial time for “mean duration” instead of wall clock time
- [FIX] - Gradle dependencies comparison fails when using Ivy repositories
- [FIX] - Gradle Enterprise may fail to start if network is unavailable on startup
- [FIX] - Predictive Test Selection does not work with Gradle tasks that subclass the standard Test task type
- [FIX] - Files corrupted during upload cause errors on Test Distribution agents
- [FIX] - Deprecations usages expansion unexpectedly changes scroll position and truncation page
- [FIX] - Support bundles do not contain application metrics
- [FIX] - Gradle Enterprise may fail to start after crash during data maintenance
- [FIX] - Inter-section Gradle Build Scan links may be incorrect when using composite builds
- [FIX] - Predictive Test Selection dashboard queries over large data sets may fail to display due to timeout
- [FIX] - Predictive Test Selection simulator shows no data if Predictive Test Selection is not enabled
- [FIX] - Maven Build Scan timeline may fail to display if build fails very early
- [FIX] - Installations with many Maven Build Scans may fail to upgrade to 2022.2
- [FIX] - Bazel Build Scan may fail to display if workspace status generation fails
- [NEW] - Reduce build time with Predictive Test Selection
- [NEW] - Use read-only build caching for non-clean Maven build invocations
- [NEW] - Better observability of Gradle configuration cache performance
- [NEW] - Airgap support for Helm-based installations
- [NEW] - Expanded PostgreSQL support
- [FIX] - Navigating to the console log of a failed Maven goal execution is not straightforward
- [FIX] - Bazel builds with long running actions may fail to create a build scan
- [FIX] - Bazel may fail to download large files from the build cache
- [FIX] - Comparing Gradle dependencies without variants may cause an error
- [FIX] - Comparing Gradle task inputs where the Gradle User Home directory is registered as a file input causes an error
- [FIX] - Using timestamps with nanos in dashboard queries produces incorrect data
- [FIX] - Execution phase duration of Gradle composite builds requesting only included build tasks is incorrect
- [FIX] - Scan list and dashboard URLs can become very long
- [FIX] - LDAP referrals cannot be used for role membership