Schnelle und zuverlässige Builds mit Gradle und Maven

Schnelle und zuverlässige Builds mit Gradle und Maven

Schnelle und zuverlässige Builds haben einen großen Einfluss auf die Produktivität von Entwicklungsteams. Schnellere Builds ermöglichen kürzere Feedbackzyklen durch reduzierte Wartezeiten und weniger Kontextwechsel für Entwickler. Wenn ein Build unzuverlässig ist, müssen Entwickler Zeit investieren und die oftmals sehr schwer nachvollziehbaren Probleme durch wiederholtes Ausführen des Builds beheben. Weiterhin sinkt das Vertrauen der Entwickler in den Build, so dass diese die Optimierungen des Build-Tools ausschalten und dadurch die Buildzeit erhöhen. Z.B. neigen Entwickler dazu bei unzuverlässigen inkrementellen Builds immer Clean auszuführen.

In diesem Vortrag zeigen wir, wie Gradle Enterprise sowohl bei Gradle als auch bei Maven Builds hilft, diese mit dem Build Cache schneller und mit Hilfe von Build Scans zuverlässiger zu machen.

Der Build Cache speichert die Ergebnisse jedes Build-Schritts auf einem Server. Diese gecachten Ergebnisse können dann sowohl von Entwicklern als auch von CI Builds benutzt werden.

Wir gehen auch darauf ein, wie die Geschwindigkeit und die Zuverlässigkeit der einzelnen Build Schritte durch Build Scans erhöht werden kann. Build Scans helfen zu verstehen, wo die Flaschenhälse des Builds sind und liefern wertvolle Daten um die Probleme Ihres Builds zu analysieren und zu beseitigen.

956c7d246841e8507a1e1b96842994db?s=128

Marc Philipp

June 04, 2019
Tweet

Transcript

  1. Schnelle und zuverlässige Builds mit Gradle und Maven Marc Philipp,

    Gradle Inc.
  2. Wer bin ich? speaker { name = "Marc Philipp" home

    = "Karlsruhe, Germany" company = "Gradle Inc." title = "Senior Software Engineer" openSourceRoles = [ "JUnit team lead" ] twitter = "@marcphilipp" github = "marcphilipp" web = uri("https://www.marcphilipp.de") }
  3. Gradle Inc. Build Happiness Products Gradle Build Tool Gradle Enterprise

  4. Wie beeinflusst der Build die Entwicklerproduk vität? 20% Buildfehlschläge Fixen

    5‑10% Teamzeit Langsam Pro Minute 4% Teamzeit Unzuverlässig: 5% Teamzeit
  5. Schnelle Builds

  6. Schnelle Builds Schneller = weniger machen Ergebnisse wiederverwenden! Inkrementeller Build

    Build Cache
  7. Inkrementeller Build Gradle Maven

  8. Inkrementeller Build Gradle kann Ergebnisse des letzten Mals als dieser

    Build auf diesem Computer ausgeführt wurde wiederverwenden.
  9. Das geht noch besser!

  10. Wieso nicht… von irgendwann wenn irgendein Build irgendwo ausgeführt wurde.

  11. Noch besser… für Maven und Gradle Builds!

  12. None
  13. Build Cache für Gradle $> gradle --build-cache assemble :compileJava FROM-CACHE

    :processResources :classes :jar :assemble BUILD SUCCESSFUL
  14. Build Cache für Gradle Standardmäßig für Java, Groovy, Scala, C++

    und Swi Unterstützt Compile, Test und Verifica on Tasks High‑Performance Remote Backend von Gradle Docker Hub: gradle/build‑cache‑node
  15. Build Cache für Maven Eigene Extension (Teil von Gradle Enterprise)

    Ini ales Release: März 2019 Unterstützte Plugins: Java Compiler, Surefire/Failsafe, Javadoc, JAXB, Checkstyle
  16. Build Cache – Demo

  17. Wie funk oniert der Build Cache? Berechne cacheKey eines Tasks/Goals

    basierend auf seinen Inputs: cacheKey(javaCompile) = hash(sourceFiles, … ) Speichere die Outputs unter cacheEntry: cacheEntry[cacheKey(javaCompile)] = fileTree(classFiles) Gradle task Inputs Outputs
  18. Lokaler und Remote Cache

  19. Zuverlässige Builds

  20. Anforderungen Daten um Verbesserungen/Verschlechterungen festzustellen Entwickler‑ und CI‑Builds Zuverlässigkeit Geschwindigkeit

  21. Was sind Build Scans? Aufzeichnung darüber, was in einem Build

    passiert ist Permanente und teilbare URLs Für Entwickler und Build Engineers
  22. Gradle $> gradle build --scan ... BUILD SUCCESSFUL in 5s

    143 actionable tasks: 29 executed, 76 from cache, 38 up-to-date Publishing build scan... https://gradle.com/s/wnftgsuyjleyi
  23. Maven (mit in .mvn/extensions.xml registrierter Extension) $> mvn clean verify

    ... [INFO] ----------------------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] ----------------------------------------------------------------------- [INFO] Total time: 5.262 s [INFO] Finished at: 2019-04-23T09:55:36+02:00 [INFO] ----------------------------------------------------------------------- [INFO] 13 goals, 8 executed, 5 from cache, saving at least 16s [INFO] [INFO] Publishing build scan... [INFO] https://gradle.com/s/ypgljbvelzxzs [INFO]
  24. Build Scans – Demo

  25. Build Scans Unterstützen Gradle und Maven Öffentliche Scans kostenlos auf

    Gradle Enterprise bietet zusätzliche Features und Hos ng auf eigenem Server Build Comparison Performance Dashboard Build Trends scans.gradle.com h ps:/ /gradle.com/s/wn gsuyjleyi
  26. Eigene Analysen Export API benutzen! h ps:/ /github.com/gradle/build‑analysis‑demo

  27. None
  28. None
  29. Materialien Kostenlose Trainings auf , z.B.: Build Cache Deep Dive

    Maven + Gradle Enterprise Gradle Build Tool: Gradle Enterprise: gradle.com/training YouTube‑Kanal h ps:/ /gradle.org h ps:/ /gradle.com
  30. Vielen Dank!