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

ITT 2017 - Etienne Studer - Product success as a function of build automation

ITT 2017 - Etienne Studer - Product success as a function of build automation

Building, testing, assembling, and releasing software has become a very demanding and complex process over the past years. Multiple components built in multiple languages, distributed teams in different timezones working on different parts of the system, several stages of quality insurance, various software distribution channels, and so on. At the same time, the pressure to release new versions of the software has also tremendously increased and fast high-quality deliveries have become essential for the survival and success of many products.

A suitable platform to build and release your software needs to handle the high complexity of today’s build requirements while at the same time still scaling in terms of performance. Gradle is the most powerful player amongst the build platforms and is chosen by companies like LinkedIn, Netflix, and others that rely strategically on continuous and fast delivery of their software.

In this presentation, Etienne Studer explains how Gradle allows you to elegantly model your build requirements, how Gradle manages to scale its performance to very large builds, and how you can get deep insights into the behavior of your Gradle builds. Demos will be given on features like the Daemon, Composite Builds, Incremental Builds, Compile Avoidance, Build Cache, Build Scans, and other features that maybe sound a bit obscure to you right now but whose concepts and application you will soon understand and appreciate.

Istanbul Tech Talks

April 03, 2017
Tweet

More Decks by Istanbul Tech Talks

Other Decks in Programming

Transcript

  1. | 2

  2. | 3 E"enne Studer C: Gradle Inc. P: Gradle Enterprise

    E: e"[email protected] T: @e"ennestuder G: github.com/e"ennestuder
  3. Op"mize soFware delivery through build automa"on to safe "me, achieve

    reproducibility, and enable developer produc"vity!
  4. | 9 Idea7on Research Specifica7on Implementa7on Tes7ng Deployment Customer feedback

    Sales Marke7ng Requirements gathering boosts facilitates Build automa/on impact
  5. | 13 Gradle build execu/on Gradle build scripts Gradle tasks

    Gradle task execu/on 2-phase build: Configura/on phase → build task graph (DAG) Execu/on phase → execute task graph
  6. Typically, not much changes in the build between consecu/ve invoca/ons

    of the build. When liQle changes in the build, liQle work should be done by the build. Reuse outcomes of the previous run. Observa/on
  7. Task inputs and outputs Only run a task if its

    input or outputs have changed since the previous run. Inputs —> Task —> Outputs Example: Compile task inputs: source files, compiler flags, etc. Compile task output: class files
  8. | 20 Build cache • Reuse outcomes of any previous

    run (rather than just the last) • Task output caching • Local cache and remote cache
  9. | 23 Build cache buildCache { local { enabled =

    !isCI } remote(HttpBuildCache) { url = ‘https://my.ge.server/cache/' push = isCI } }
  10. | 26 Avoid was/ng /me compiling source classes that
 do

    not have to be compiled. Compile avoidance & incremental compiler
  11. | 31 Gradle builds executed much more quickly by a

    long-lived background process that avoids expensive bootstrapping and leverages caching. Gradle daemon
  12. | 35 Composite builds • Fix a bug in a

    library through app using project • Break down a monolith into mul/ple repos • Consume latests state of libraries in integra/ons builds
  13. | 39 IDE integra/on • Project import & synchroniza/on •

    Task execu/on • Test execu/on • Build execu/on insights Build is the single source of truth!
  14. | 40 Tooling API Launcher Tooling API Server Cmd Line

    (build master) (cont integra/on) Gradle (daemon) IDE (developer)
  15. | 44 Gradle Script Kotlin • Syntax highligh/ng • Quick

    documenta/on • Naviga/on to source • Auto-comple/on / content assist • Refactoring • High execu/on /me performance Build code is no different to applica5on code!
  16. | 47 Build scans • Gain build insights • Improve

    build performance • Collaborate with colleagues and the community
  17. | 51 Gradle Enterprise • Query scans • Compare scans

    • Use a high-performance, scalable build cache • Host within your firewall Gain deep build insights within your company and teams!
  18. | 54 • Incremental builds • Build cache • Compile

    avoidance & incremental compiler • Daemon • Composite builds • Tooling API • Sta/cally-typed DSL • Build scans • Gradle Enterprise Gradle Used by