Next Online/Hands-On Workshop: Intro to Developer Productivity Engineering – January 14, (09:00 AM – 11:30 AM PST). Learn more here.
Gradle Enterprise 2021.4
Gradle Enterprise 2021.4 features a preview of the upcoming Predictive Test Selection functionality, in the form of a simulator that shows the potential build acceleration for your projects. Predictive Test Selection intelligently reduces build times by skipping tests that are very unlikely to provide useful feedback for a change.
This release also features Build Scans for the Bazel build tool – a build tool based on Google’s internal build system – further expanding the build tools supported by Gradle Enterprise.
Read on for more details of these and other new features.
Use version 1.12.1 of the Gradle Enterprise Maven extension, version 3.8.1 of the Gradle Enterprise Gradle plugin, version 2.2.2 of the Gradle Enterprise Test Distribution Gradle plugin, version 1.6.5 of the Gradle Enterprise Test Distribution Agent, and version 11.1 of the Gradle Enterprise Build Cache Node for optimal usage of Gradle Enterprise.
Predictive Test Selection intelligently reduces build times by skipping tests that are very unlikely to provide useful feedback for a change. Inspired by similar internal systems at Facebook and Google, this system automatically learns a test selection strategy from code changes and test execution history to predict relevant tests to run. It is particularly useful for large projects with test suites that take a considerable amount of time.
With this release of Gradle Enterprise, you can enable the “Predictive Test Selection Simulator” which allows you to see how Gradle Enterprise Predictive Test Selection would impact your project were it to be used. Future versions of Gradle Enterprise will allow you to actually use Predictive Test Selection to realize the benefits visualized by the simulator.
The simulator allows you to estimate the effectiveness of Gradle Enterprise Predictive Test Selection for a target set of builds by comparing predictions to actual test results. Through the simulator you can inspect prediction results by test task and trace possible incorrect predictions to their test logs, in order to gain a full understanding of the efficacy of the system.
Gradle Enterprise now provides Build Scans for Bazel builds, further expanding the build tools supported by Gradle Enterprise.
Gradle Enterprise leverages Bazel’s native build event service and remote cache functionality, which allows Bazel builds to publish Build Scans to Gradle Enterprise without any significant build modifications.
After adding the following to your project’s .bazelrc file:
Your Bazel build will display the following at the beginning and end of the build:
The link shown is your Build Scan link and can be used to observe the results of the build.
Bazel Build Scans provide shareable access to the console logging, build performance profile, action cache hit rate, requested target results and failure diagnostics, effective build configuration options, build environment and detailed individual test results. Additionally, the Tests Dashboard can be used to identify the slowest, most failing, and flakiest individual tests across many builds based on different search criteria.
For more information on configuring Bazel builds to publish Build Scans to Gradle Enterprise, please see the Bazel Configuration Guide.
Gradle 6.8 and Gradle Enterprise Maven extension 1.8 added directory sensitivity normalization for file inputs, while Gradle 7.2 and Gradle Enterprise Maven extension 1.11 added line ending sensitivity. Gradle Enterprise 2021.4 visualizes these new normalization settings when comparing task or goal inputs, and when they differ between builds.
Additionally, the text displayed by the (?) icon next to the normalization settings provides more detailed information about the actual effect of the normalization settings.
Build cache nodes can now be configured to use as much space as is available on the disk to store cache artifacts. This is often useful when the build cache node uses a dedicated storage volume, which is common when the build cache node is deployed in containerized environments. This setting avoids the need to synchronize the storage volume size with a target cache size.
By default, a free space buffer of 1 GiB will be maintained with the cache size being automatically reduced should another process or application use more of the available disk space.
To enable automatic target cache size management, change the Target cache size from Fixed to Maximum available.
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.
Kubernetes database data and backup volume split
For Kubernetes installations, database backups will now be created in their own persistent volume and will no longer share the database data volume. Before applying this upgrade we strongly recommend copying any existing backups outside the cluster, as they will otherwise be lost.
By default, a new 250 GB persistent volume will be provisioned to store the database backups. This is configurable and may need to be increased inline with your database size and how many backups you wish to retain. You can execute the following command to see what your current backup storage requirements are:
- [FIX] - Built-in build cache node does not warn when configuration is insecure
- [FIX] - User-managed database setup scripts fail when used on Azure
- [FIX] - Maven goal inputs comparison fails when goal uses root module dir as input
- [FIX] - Upgrade Log4j to 2.17.1 (see https://security.gradle.com/advisory/2021-11)
- [FIX] - Selecting a task in the timeline graph does not scroll to details view
- [FIX] - Viewing a build scan summary for a very large can be sporadically very slow
- [NEW] - Measure the potential benefits of the upcoming Predictive Test Selection
- [NEW] - Build scans for Bazel builds
- [NEW] - Visualize all inputs normalization features in build scans comparison
- [NEW] - Automatically use the maximum possible target cache size
- [FIX] - Update Log4j to version 2.17.0 (see https://security.gradle.com/advisory/2021-11)
- [FIX] - Slowest tests are not visible on the Tests dashboard when there are no failing tests
- [FIX] - Tests dashboard does not visualize test classes with more than 32K test methods
- [FIX] - Administration error messages are not always cleared when discarding a configuration change
- [FIX] - Build scan navigation menu items are not responsive when already selected
- [FIX] - Build scan navigation breadcrumbs are not efficient for navigating
- [FIX] - Build cache configuration warning message for early-included builds is confusing
- Gradle Enterprise Getting Started Guide for Gradle users
- Gradle Enterprise Getting Started Guide for Apache Maven users
- Gradle Enterprise Bazel Configuration Guide
- Gradle Enterprise Administration Manual
- Gradle Enterprise Version Compatibility
- Gradle Enterprise Gradle Plugin User Manual
- Gradle Enterprise Maven Extension User Manual
- Build Cache Node User Manual
- Gradle Enterprise Test Distribution Gradle Plugin User Manual
- Gradle Enterprise Test Distribution Agent User Manual