Gradlebuilding great tool
me
szczepan faber
lives in krakow/poland
lead at Mockito
core dev at Gradle
soccer junkie (idzie, idzie, idzie, …)
gradle
what do you know about Gradle?
build tool
decent feature set and very active development
always open source and free
sustains its own conference
world domination in progress
gradleware
looks after Gradle
offers consulting
no vc
me @ gradleware
toolmaker
keen on quality and team efficiency
strategic clients (LinkedIn)
conferences
talk
automation dogfood
gradle in large projects
gradle team
inside Gradle
~ 7 very distributed full time engineers
frequent, regular releases (~ 6 weeks)
10000+ automated tests
contains documentation and release notes
automation
critical for high performing teams
allows us to achieve high quality
continuous investment
persistent problem
everyone’s responsibility
our business
automation + dogfood
quality focus
lots of work to make Gradle greater
LinkedInGradle should ‘just scale’
challenges
scaling Gradle off limits
dealing with single build pipeline
adding value with each release
Gradle in very large projects
small project: <10 subprojects
medium project: <50 subrpojects
large project: <200 subprojects
very large project: 200+ subprojects
gigantic project: 2000 subprojects (real!)
dealing with large projects
don’t
ant
gradle and maven
use the wrapper
Igor’s story
larger builds take longer to troubleshoot
make the dev environment as consistent as possible
use the daemon
large builds inherently provide slower feedback
use all possible ways to quicken the feedback
daemon means snappier builds
even snappier in the future
use Gradle 1.7+
caching of dependency metadata
smarter cross-process synchronisation
use Gradle 1.8+
serialisation of the dependency results
Use Gradle 1.9+
daemon keeps task history in memory
use Gradle 1.10+
daemon caches the classloaders
keep using latest Gradle
more coming
daemon keeps configured model in memory
daemon finds out-of-date tasks in the background
parallel configuration
dogfoodingdogfooding automation every day
IDE/Editor
Automate the “import” process
Prerequisites are java & IDE but no Gradle (thanks to Wrapper)
Provide a consistent setup
Make it possible to run frequent tasks via the IDE
Testing
Unit
we are fond of tests, TDD and high coverage
groovy tests (spock) for java code
Integration testing
every integration test can be ran in different modes:
embedded (speed, fast dev cycles, easy debugging)
forking (slower but more realistic)
daemon (excellent stress test and coverage test for the daemon)
parallel (excellent stress test and coverage test for parallel feature)
Integration testing
cross version integration tests (backward compatibility)
run test against a set of different versions of a 3rd party tool (e.g.
building scala, running jUnit tests)
run test against a set of Gradle versions
full suite VS recent version only
tooling api cross version tests (backward and forward compatibility)
consumer & provider
Testing
Cross platform
Distribution
Performance
Testable documentation
Automatically tested documentation
samples (in user guide or in distribution)
evaluation
running arbitrary tasks and comparison of output
using samples content for integration tests
build script snippets in the javadoc - evaluation (dsl reference, javadocs)
java code snippets in the javadoc - compilation attempt (javadocs)
slideware automation
Documentation
Automatically deployed documentation
User guide
DSL reference
API reference
Release notes
Code Quality
Ensure public API is documented
License headers
Cyclical package dependencies
Static analysis (Checkstyle & Codenarc)
Build pipeline
Runs on every push
Identical on both branches (master & release)
TeamCity
Pipeline structure
Static analysis
Quick, less accurate tests (small number of platforms)
Build production like distributions
Platform tests
Execution mode tests
Performance test
Promote
Reusing binaries
Production like binaries built at start of pipeline
CI server pushes binaries to downstream builds
Release cycle
A cycle is ~ 6 weeks.
Move to release branch after ~ 4 weeks
Plan new release ~ 4 weeks
Promote RC ~ 5 weeks
Promote final (end)
Merge release branch back to master (final)
Promotion
Separate “build” for promotion
Automatically checks out specific revision
Programatically rebuilds Gradle
Imposes the version number
Triggered by 1 click @ CI server
Delivery
Build, smoke test
Decorate docs with Google Analytics JS
Upload to (some bits)repo.gradle.org
Upload dists and decorated docs to Amazon S3
Checkout website repo, update data, push
Trigger pull new docs
Smoke test delivered distributions
Send notification email to team
Finish with manual processes
Gradle.org
Data driven
Push deploy
Updated by non technical staff
Post “release” test
Defect tracking/planning
Three levels:
forums.gradle.org -> entry point
issues.gradle.org -> acknowledged defects
Pivotal Labs -> team planning
Automated move/sync data between systems.
Forums
Some interesting automations/tweaks:
Markdown/syntax highlighting
Issue number linking
Documentation linking
News
Roadmap
Thanks!
gradle.org
gradleware.com
Questions?

More Related Content

PPTX
Gradle: One technology to build them all
PDF
QA on drupal projects
PDF
Improving Untestable Code
PDF
Boost your API with GraphQL
PPTX
Интеграция решения по тестированию производительности в существующий фреймвор...
PPTX
Ntd2015_pt_kanban_ppt
PPTX
Azure Integration DTAP Series, How to go from Development to Production – Par...
PPTX
Build your android app with gradle
Gradle: One technology to build them all
QA on drupal projects
Improving Untestable Code
Boost your API with GraphQL
Интеграция решения по тестированию производительности в существующий фреймвор...
Ntd2015_pt_kanban_ppt
Azure Integration DTAP Series, How to go from Development to Production – Par...
Build your android app with gradle

What's hot (20)

PPTX
Git Overview
PPTX
QA Fes 2016. Артем Быковец. Как выживать тестировщику в Agile среде
ODP
Jenkins Pipelining and Gatling Integration
PDF
Devopstalks 2017-gwen
PDF
EFL QA: Where Are We and Where Should We Go?
PDF
Continuous integration and delivery for java based web applications
PDF
QA on Drupal projects - Drupal Dev Days Seville 2017
PPTX
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
PPTX
Continuous Testing using Shippable and Docker
PDF
Continuous Delivery at Snyk
PPT
Introduction to Grails
PDF
Spring GraphQL
PPTX
XP Days Ukraine 2019
PPTX
Testing Java EE apps with Arquillian
PDF
Hadoop Summit 2013 : Continuous Integration on top of hadoop
PPTX
PPTX
Bots on guard of sdlc
PDF
JUnit 5 — New Opportunities for Testing on the JVM
PPTX
Exactpro Systems for KSTU Students in Kostroma
PDF
Create an architecture for web test automation
Git Overview
QA Fes 2016. Артем Быковец. Как выживать тестировщику в Agile среде
Jenkins Pipelining and Gatling Integration
Devopstalks 2017-gwen
EFL QA: Where Are We and Where Should We Go?
Continuous integration and delivery for java based web applications
QA on Drupal projects - Drupal Dev Days Seville 2017
Automating Your Way to Greatness by Combining OutSystems CI/CD With the Power...
Continuous Testing using Shippable and Docker
Continuous Delivery at Snyk
Introduction to Grails
Spring GraphQL
XP Days Ukraine 2019
Testing Java EE apps with Arquillian
Hadoop Summit 2013 : Continuous Integration on top of hadoop
Bots on guard of sdlc
JUnit 5 — New Opportunities for Testing on the JVM
Exactpro Systems for KSTU Students in Kostroma
Create an architecture for web test automation
Ad

Viewers also liked (20)

PDF
TéCnico Superior En AnatomíA PatolóGica Y CitologíA
PPT
Business in Rete - 1 marzo 2012
PPSX
Felicitacion para ivan
PDF
New Life 2012 Annual Report
PPT
EuropeanaLocal: what’s it all about?
PDF
Bondia.cat 13/09/2013
PPT
Uso educativo de los servicios de redes sociales en linea
PPT
Escuela nueva,sistema, modelo,programa
PDF
BTO 2015 | Raccontare con email marketing | VOXmail.it
PPT
El futuro de la dirección de personas
PDF
Trying and evaluating the new features of GlusterFS 3.5
PDF
Cassazione: la sentenza Domegan / Bikkembergs
PPTX
Training+ppts
PDF
7 convergencia niif-luis-alonso colmenares
PDF
Guide des produits LifeSize
PPT
Promoción de la salud de las personas mayores
PPT
La competencia digital: las TIC en la clase de ELE
PPT
Necesidades Educativas Especiales
PDF
Materiales
DOC
Guia volumen 3°
TéCnico Superior En AnatomíA PatolóGica Y CitologíA
Business in Rete - 1 marzo 2012
Felicitacion para ivan
New Life 2012 Annual Report
EuropeanaLocal: what’s it all about?
Bondia.cat 13/09/2013
Uso educativo de los servicios de redes sociales en linea
Escuela nueva,sistema, modelo,programa
BTO 2015 | Raccontare con email marketing | VOXmail.it
El futuro de la dirección de personas
Trying and evaluating the new features of GlusterFS 3.5
Cassazione: la sentenza Domegan / Bikkembergs
Training+ppts
7 convergencia niif-luis-alonso colmenares
Guide des produits LifeSize
Promoción de la salud de las personas mayores
La competencia digital: las TIC en la clase de ELE
Necesidades Educativas Especiales
Materiales
Guia volumen 3°
Ad

Similar to Szczepan.faber.gradle (20)

PDF
Gradle(the innovation continues)
PDF
What's new in Gradle 4.0
PDF
Enterprise build tool gradle
PPTX
Exploring the power of Gradle in android studio - Basics & Beyond
PDF
Keeping your build tool updated in a multi repository world
PPT
How to Build and Maintain Quality Drupal Sites with Automated Testing
PDF
Rene Groeschke
PPTX
Devops Introduction nd basics of DevOps.
PPTX
Programming in HTML5 With Java Script and CSS3
PPTX
Gradle build capabilities
PPTX
Azure DevOps for Developers
PDF
Make Your Build Great Again (DroidConSF 2017)
PPT
Presentation 1 open source tools in continuous integration environment v1.0
PDF
Gradle - the Enterprise Automation Tool
PPTX
Faster Java EE Builds with Gradle
PPTX
Faster Java EE Builds with Gradle
PPT
Behavior Driven Development by Example
PDF
Making the Most of Your Gradle Builds
ODP
Eclipse Buildship JUG Hamburg
PPTX
Azure DevOps for JavaScript Developers
Gradle(the innovation continues)
What's new in Gradle 4.0
Enterprise build tool gradle
Exploring the power of Gradle in android studio - Basics & Beyond
Keeping your build tool updated in a multi repository world
How to Build and Maintain Quality Drupal Sites with Automated Testing
Rene Groeschke
Devops Introduction nd basics of DevOps.
Programming in HTML5 With Java Script and CSS3
Gradle build capabilities
Azure DevOps for Developers
Make Your Build Great Again (DroidConSF 2017)
Presentation 1 open source tools in continuous integration environment v1.0
Gradle - the Enterprise Automation Tool
Faster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
Behavior Driven Development by Example
Making the Most of Your Gradle Builds
Eclipse Buildship JUG Hamburg
Azure DevOps for JavaScript Developers

More from magda3695 (20)

PPTX
Prezentacja 20141129
PPTX
PDF
Prezentacja personal branding
PDF
Dlaczego firmy wdrażają er py info_meet kraków
PDF
Patterns for organic architecture codedive
PDF
Systematic architect
PDF
Continuous delivery
PDF
Szczepan Faber mockito story (1)
PDF
Sea surfing in asp.net mvc
PDF
Big data today and tomorrow
PDF
Info meet katalog kraków 8 marca
PDF
Info meet 8 02-2014
PPTX
Ccpm jako metoda planowania i kontroli projektów
PDF
Soft layer cloud without compromise
PDF
Info meet pomiary wydajności
PDF
A rnav infomeet
PPT
Agile zrobtosam infomeet
PDF
Abc zarządzania sobą
PDF
Dług technologiczny czyli mały wkład w duże problemy
PDF
Akamai in a hyperconnected world
Prezentacja 20141129
Prezentacja personal branding
Dlaczego firmy wdrażają er py info_meet kraków
Patterns for organic architecture codedive
Systematic architect
Continuous delivery
Szczepan Faber mockito story (1)
Sea surfing in asp.net mvc
Big data today and tomorrow
Info meet katalog kraków 8 marca
Info meet 8 02-2014
Ccpm jako metoda planowania i kontroli projektów
Soft layer cloud without compromise
Info meet pomiary wydajności
A rnav infomeet
Agile zrobtosam infomeet
Abc zarządzania sobą
Dług technologiczny czyli mały wkład w duże problemy
Akamai in a hyperconnected world

Szczepan.faber.gradle