Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Marc Philipp

June 04, 2019
Tweet

More Decks by Marc Philipp

Other Decks in Programming

Transcript

  1. 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") }
  2. Wie beeinflusst der Build die Entwicklerproduk vität? 20% Buildfehlschläge Fixen

    5‑10% Teamzeit Langsam Pro Minute 4% Teamzeit Unzuverlässig: 5% Teamzeit
  3. Inkrementeller Build Gradle kann Ergebnisse des letzten Mals als dieser

    Build auf diesem Computer ausgeführt wurde wiederverwenden.
  4. Build Cache für Gradle $> gradle --build-cache assemble :compileJava FROM-CACHE

    :processResources :classes :jar :assemble BUILD SUCCESSFUL
  5. 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
  6. 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
  7. 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
  8. Was sind Build Scans? Aufzeichnung darüber, was in einem Build

    passiert ist Permanente und teilbare URLs Für Entwickler und Build Engineers
  9. 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
  10. 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]
  11. 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
  12. 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