spring-cloud-netflix icon indicating copy to clipboard operation
spring-cloud-netflix copied to clipboard

Connect build to ge.spring.io to benefit from deep build insights and faster builds

Open erichaagdev opened this issue 1 year ago • 5 comments

This pull request connects the build to the Develocity instance at https://ge.spring.io/. This allows the Spring Cloud Netflix project to benefit from deep build insights provided by build scans and faster build speeds for all contributors as a result of local and remote build caching.

This Develocity instance has all features and extensions enabled and is freely available for use by Spring Cloud Netflix and all other Spring projects. On this Develocity instance, Spring Cloud Netflix will have access not only to all of the published build scans, but other aggregate data features such as:

  • Dashboards to view all historical build scans, along with performance trends over time
  • Build failure analytics for enhanced investigation and diagnosis of build failures
  • Test failure analytics to better understand trends and causes around slow, failing, and flaky tests

Spring Boot, Spring Framework, Spring Security, and many other Spring projects are already connected to https://ge.spring.io/ and are benefiting from these features.

With these changes, in the best case scenario where nothing has changed between two build invocations, I saw local build times go from 1m 46s to 10s.

Appropriate access must be configured to publish build scans. To provision a Develocity access key for local development, you can invoke the following Maven goal:

./mvnw develocity:provision-access-key

For instructions to connect CI to the remote build cache and to publish build scans, please follow the instructions here in Develocity Conventions. I have already configured the workflows with the proper environment variables, they just need to be added to the environment.

Please let me know if there are any questions about the value of Develocity or the changes in this pull request and I’d be happy to address them.

erichaagdev avatar Nov 29 '23 22:11 erichaagdev

This is something I've considered but it hasn't been a high priority. If we do it, I'd like all of the maven configuration to be in spring-cloud-build so all of our projects would benefit rather than just one.

spencergibb avatar Nov 29 '23 23:11 spencergibb

Hey @spencergibb! 👋

There has to be some changes made to each project to add the Maven extension and configure annotation processors depending on which processors are on the project classpath. The configuration in gradle-enterprise.xml could be centralized in a Spring Maven conventions extension (à la the Spring Gradle conventions plugin) but it hasn't been something we've coordinated work on yet.

Regarding spring-cloud-build, is this where the Spring Cloud configuration lives? You'll notice I updated the GitHub Actions workflows with the appropriate credentials, but if you use another CI we could centralize the credentials there.

We recently worked with the Spring Data team to connect all of their projects to ge.spring.io. The idea is to also do the same for Spring Cloud. I can connect the rest of the Spring Cloud projects once you are happy with this PR.

erichaagdev avatar Nov 30 '23 15:11 erichaagdev

Hi @spencergibb. Have you given any more thought on rolling out Gradle Enterprise to Spring Cloud projects?

erichaagdev avatar Dec 20 '23 15:12 erichaagdev

No, we'll chat about it as a team after the new year

spencergibb avatar Dec 20 '23 15:12 spencergibb

Hi @spencergibb and Happy New Year! I just wanted to check in to make sure this is still on your team's radar.

erichaagdev avatar Feb 21 '24 02:02 erichaagdev