Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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") }

Slide 3

Slide 3 text

Gradle Inc. Build Happiness Products Gradle Build Tool Gradle Enterprise

Slide 4

Slide 4 text

Wie beeinflusst der Build die Entwicklerproduk vität? 20% Buildfehlschläge Fixen 5‑10% Teamzeit Langsam Pro Minute 4% Teamzeit Unzuverlässig: 5% Teamzeit

Slide 5

Slide 5 text

Schnelle Builds

Slide 6

Slide 6 text

Schnelle Builds Schneller = weniger machen Ergebnisse wiederverwenden! Inkrementeller Build Build Cache

Slide 7

Slide 7 text

Inkrementeller Build Gradle Maven

Slide 8

Slide 8 text

Inkrementeller Build Gradle kann Ergebnisse des letzten Mals als dieser Build auf diesem Computer ausgeführt wurde wiederverwenden.

Slide 9

Slide 9 text

Das geht noch besser!

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Noch besser… für Maven und Gradle Builds!

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Build Cache für Gradle $> gradle --build-cache assemble :compileJava FROM-CACHE :processResources :classes :jar :assemble BUILD SUCCESSFUL

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Build Cache – Demo

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Lokaler und Remote Cache

Slide 19

Slide 19 text

Zuverlässige Builds

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Was sind Build Scans? Aufzeichnung darüber, was in einem Build passiert ist Permanente und teilbare URLs Für Entwickler und Build Engineers

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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]

Slide 24

Slide 24 text

Build Scans – Demo

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

Eigene Analysen Export API benutzen! h ps:/ /github.com/gradle/build‑analysis‑demo

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Vielen Dank!