Developer Productivity Engineering Blog

What’s New in Develocity 2020.2

Develocity 2020.2 introduces a major new feature: Test Distribution. Develocity Test Distribution executes your existing test suites faster by fanning out test execution to as many machines as you provide.

Another cool improvement is Background Build Scan Uploading. This makes capturing build scans for local developer builds seamless as the build now completes before the build scan finishes uploading. This is especially useful for developers with poor network connections.

Read on for more details of these and other new features including:

  • Improved Test Result Visualization
  • Ability to View Dependencies Requiring a Dependency for Maven Builds
  • Ability to Find Snapshot Dependencies in Maven Builds
  • Summarized Stacktraces for Build Failures and Gradle Deprecations

Note: Use version 1.5 of the Develocity Maven extension, and version 3.3 of the Develocity Gradle plugin for optimal usage of Develocity.

Highlights

Test Distribution for Gradle Builds

Test Distribution is a brand new major feature in Develocity. It is part of our broader Build & Test Accelerator solution which includes Build Cache and Performance Profiling capabilities to reduce feedback cycles associated with idle time waiting for builds and tests to complete. It is delivered as part of the testing add-on package introduced in Develocity 2019.5. Test Distribution allows you to distribute the execution of your build’s tests to as many compute resources, called agents, as you provide. It is currently only available for Gradle builds, with equivalent Maven functionality to come.

After applying the Develocity test distribution plugin to your Develocity connected Gradle build, any existing test suite using Gradle’s built-in test task can be configured to be distributed. The plugin ships your tests and the full runtime classpath to any available test distribution agents that are registered with your Develocity server to be executed there. Test results including logging are shipped back to the build and are available in build scans and existing reporting, such as the results XML file used by many CI servers. If no agents are available, test execution proceeds locally.

The Test Distribution agent is available as a Docker image or standalone fat JAR and is easy to deploy and operate via Kubernetes or any modern compute platform. Registration key secrets that agents use to connect to the Develocity server can be generated in the Develocity admin section. The admin section shows all active jobs, connected agents, and a historical visualization of workload and agent utilization.

See the Develocity Test Distribution Gradle Plugin User Manual and Develocity Test Distribution Agent User Manual to learn more and get started with Test Distribution.

Note: Test Distribution is available in Develocity 2020.2 as a preview of the testing add-on package. Depending on your usage license, this new functionality may not be available to your installation when it is no longer in feature preview. If you have questions regarding this matter, please contact Develocity support.

Background Build Scan Uploading

Previously, builds waited for build scans to be uploaded before finishing which could cause a delay, particularly for developers with poor network connections. Now, build scans are uploaded in the background after the build has finished which allows IDEs and users to resume control after executing a build much sooner and makes collecting build scans for local development builds seamless. This functionality is available for Gradle and Maven build scans.

Background uploading is now the default behaviour and does not need to be enabled. However, in ephemeral build environments (e.g. CI agents) that terminate as soon as the build finishes it should be disabled to avoid the upload process being terminated early. Please see the corresponding section of the Gradle plugin or Maven extension user manual for more information.

Note: Background build scan uploading requires Develocity Gradle plugin 3.3+ or Develocity Maven extension 1.5+.

Improved Test Result Visualization

The test result visualization has been revamped for both Gradle and Maven Build Scans to make the critical information more accessible and apparent, and to better visualize flaky tests.

The test result page now shows all executions of a test, which streamlines flaky test debugging by putting all information related to the test in one place. For Gradle builds using plugin version 3.3 or later, any logging output for the first successful execution of a test after a failing execution (i.e. a test that succeeded after being retried) is now also displayed, making it easier to identify differences between failed and passed test executions.

Error stacktraces now initially show only the most relevant parts, based on heuristics such as the test class name. The full stacktrace can be viewed by expanding the summarized stacktrace.

The new “Test history” link shows the results of the test over the previous 7 days in the Tests Dashboard, making it easier to understand whether a test’s failure or flakiness is new or pre-existing.

Note: Viewing logging output for first-successful-after-failure test executions is only available for Gradle and requires Develocity Gradle plugin 3.3+.

View Dependencies Requiring a Dependency for Maven Builds

The build scan dependency graph visualization allows exploring the dependencies of a module, starting at the top level dependencies and transitively, in turn, through their dependencies. Now, it is also possible to easily view the dependents, of any dependency in the graph via the new “Required by” tab in the detail inspector.

This view shows all of the dependents. This is particularly useful when reasoning about a dependency substitution. When encountering a dependency that has been substituted due to conflict resolution, the “Required by” view can show the dependents of other versions. This is also helpful when viewing dependency graph search results, where the path through the graph to a dependency is less apparent.

Find Snapshot Dependencies in Maven Builds

Dependencies of Maven builds can be filtered by resolution type. Previously, the “dynamic” resolution type filtered to dependencies declared with any kind of non-specific version. This included snapshot dependencies, which have now been broken out into their own type due to their prevalence in Maven builds.

The “dynamic” criteria now includes only range dependencies, and dependencies declared without any specific version number. The previous behaviour can be achieved by including both the “dynamic“ and “snapshot” criteria.

Summarized Stacktraces for Build Failures and Gradle Deprecations

As mentioned in “Improved test result visualization“, test failure stacktraces are initially displayed in a summarized form to emphasize the parts of the stacktrace that are most likely to be informative in diagnosing the problem. Similarly, the stracktraces displayed for build failures for both Maven and Gradle are now summarized, along with the stacktraces for Gradle deprecations.

Upgrade Notes

If upgrading from a version of Develocity prior to 2020.1, be sure to also consult the release notes for all interim versions.

Note: Any upgrade notes here must be pasted into the corresponding admin manual at https://docs.gradle.com/enterprise/admin/2020.2

Background build scan uploading and CI builds

The new default behavior of the Develocity Gradle Plugin and Maven Extension is to upload build scans in a forked background process after the build has completed. This provides a much better experience for developers, but can be problematic in build environments that terminate as soon as the build is finished, such as single-use CI environments, as the upload may be terminated before it completes.

Background upload can be easily disabled, and should be when using environments of this nature. Please see the corresponding section of the Gradle plugin or Maven extension user manual for more information on how to disable background build scan uploading.

Upgrading from versions prior to 2019.1 is no longer supported

As of Develocity 2020.2, upgrading directly from versions prior to 2019.1 is no longer supported. If you are using such a version and wish to upgrade, please contact Develocity technical support.

Changes

2020.2

[FEATURE] – Test distribution for Gradle builds
[FEATURE] – Improved visualization of test results
[FEATURE] – Background upload of build scans when the build has finished
[FEATURE] – Insights on dependencies requiring a given dependency in build scans for Maven
[FEATURE] – Gradle deprecation notices show documentation link when available
[FIX] – Gradle task inputs comparison may fail when comparing lifecycle tasks
[FIX] – Test page may fail when a test suite is executed several times by the same Gradle task
[FIX] – Build scan background callbacks fail when invoked on certain Groovy objects
[FIX] – Build cache events consume too much disk space
[FIX] – Database backup may fail if executed while Develocity is stopped

Documentation