SlideShare a Scribd company logo
1 of 50
Download to read offline
CONTINUOUS DELIVERY
WITH GRADLE
BOB PAULIN / @BOBPAULIN / BOB@BOBPAULIN.COM
ABOUT ME
Independent Consultant
Business Enablement
Web Centric Platforms
Automation
I LOVE DELIVERING SOFTWARE
I WANT TO DELIVER SOFTWARE ALL THE TIME!
MULTIPLE TIMES A DAY!
WAIT PEOPLE ACTUALLY DO THAT?
SEVERAL MAJOR ECOMMERCE SHOPS
ETSY.COM DEPLOYS ABOUT 30 TIMES EACH DAY
MY PERSONAL RECORD 5
BENEFITS OF CONTINUOUS DELIVERY
Shorten the time it takes from conception to customer impact
Experiment more frequently
Do more concurrently
Delivery becomes a non-event
DELIVERING SOFTWARE CAN BE PAINFUL!
Needs to be Assembled
Needs to be Deployed
Needs to be Tested
How can I make sure I don't break existing stuff?
What happens if I do break something?
What about dependent systems?
How do I know what changed?
How do I control what goes in and what does not?
ALL THAT'S GOING TO TAKE ME AT LEAST 2
WEEKS!
RELEASE MANAGEMENT 101
Consistent Build Process
Functional/Regression Testing
Versioning
Source Code Management
Deployment Process
Rollback
RELEASE MANAGEMENT 501
Config Switches
Feature Branching
Modular Deployment
Throttling
Auto Provisioning
Auto-Scaling
TOOLS TO THE RESCUE!
BUILD TOOLS
Dependency Management
Packaging
Plugin Architecture
Lifecycle Management
Versioning
A RECIPE FOR CONTINUOUS DELIVERY
Gradle
Artifactory
Git
GRADLE
Build Tool
Groovy
Combines some of the best features of Ant and Maven
Conventions
Plugins
ARTIFACTORY
Binary Repository
JEE Web App
Supports Maven and Ivy
Open Source and Pro Licensed
GIT
Source Control Management
Distributed
Tagging/Branch/Merge
HOW DOES ALL THIS STUFF WORK
TOGETHER?
STEPS
SYSTEM INTERACTION
A BRIEF ASIDE ON SEMANTIC VERSIONING
LETS LOOK AT SOME CODE!
GRADLE PLUGINS
War Plugin
Cargo Plugin
Maven Plugin
GRADLE CONFIGURATIONS
CONFIG + CODE!
c ro {
ag
cn an rd =' o ct x
ot i eI
tm a7 '
pr = It gr pr en ( eP oe t( rj c .n + "d po Pr ")
ot
ne e. a sI tg tr p ry po et ev
.e l yo t)
dp oa l {
el y be
cn et =a tf c I
ot x
ri at d
fl = po et fl (r i at on od ah
ie
rj c. i ea tf cD w la Pt )
}
rm t {
eo e
hs nm = gt rp ry p oe te v+ "d p oH sn m"
ot a e
eP o et (r jc . n
. el yo t ae )
ue nm = gt rp ry p oe te v+ "d p oU eN m"
sr a e
eP o et (r jc . n
. el ys r ae )
ps wr = gt rp ry p oe te v+ "d p oP sw r"
as o d
eP o et (r jc . n
. el ya s od )
}
}
DON'T EMBED ENVIRONMENT DATA INTO THE
BUILD SCRIPT!
CREATE A USER PROPERTIES FILE INSTEAD.
DEPENDENCY MANAGEMENT

FOR YOUR APPLICATION AND FOR YOUR BUILD
b id ci t{
u ls r p
rp st re {
eo i oi s
mv n{ ul "t p :/ s. oa y eo gc ne tg o p/ ul c}
ae
r h ts /o s sn tp .r /o t n/ ru sp b i"
mv ne ta (
ae C nr l)
}
dp ne ce {
ee d ni s
ca sa h "a a .e ve :e v e- p: ."
ls p t
j vx sr l ts rl ta i2 5 ,
"r .r de ai p ui sg al - ag -l gn 06 1 ,
og g al .p .l gn : rd ec ro pu i :. ."
"r .j br tr g al -i :. . "
og a oe sa :r de g t0 63
}
}
d pn ec e {
e ed n is
df cr oe so = '. .'
e a gV ri n
13 3
df sr nV ri n = '. . .E ES '
e p ig es o
3 23 RL A E
df wo Je so = '. .'
e r 4V ri n
16 3
df ap la ne e so = ' .'
e o Al ic Vr in
10
cr o " r. oe as cr o cr oc r- br a :c ro es o " " r. o ea sc ro
ag o gc dh u .a g: ag - oe ue jr $a g Vr in , og cd hu . ag
cm ie "r .p ig rm w r: pi ga p $ p ig es o" " r. pi g rm wr :p
op l og sr n fa eo ks r n- o: sr nV r in, og sr nf ae o ks
" r. p ig rm wr :p i gc ne t$ pi g es o" "r . pi gr mw r: p ig
og sr nf ae o ks rn -o t x: sr nV ri n,o gs rn fa e ok sr n" r. p ig rm wr :p i ge pe so :s r nV ri n, " r. pi gr mw r :p
og sr nf ae o ks rn -x r si n$ pi ge s o" o gs rn f ae ok sr
" r. p ig rm wr :p i gw b$ pi ge s o" " r. pi gr mw r :p ig wb
og sr nf ae o ks rn -e : sr nV ri n, o gs r nf ae ok sr n -e
" aa . ev e: sl 12 , og sf js fj a i1 56," r .l 4: c- vr s fj
jv xs rl tj t :. "" r. l 4: l4 -p :. . " og sf jj l oe -l 4:
" r. o ea sj cs nj c sn mp e- s: . .""o al a c: oa la c: a pl
og cd hu .a k o: ak o- a pr al 19 3,a pl in ea pl i ne $o Al
cm ie "r .p ig rm w r. aa sr n- a am no b1 0 4R LA E )
op l (og sr n fa eo kd t :p ig dt -o g d: .. .E ES " {
ec ue md l:
xl d o ue
" l4 -p "
s fj a i
}
cm ie "r .p ig rm w r: pi gc r: s rn Vr in )
op l (og sr n fa eo ks r n- oe $p ig e so "{
ec ue md l:
xl d o ue
' om n- og n '
c mo s lg ig
}
cm ie ( r .s cw oj w oj cr :w oJ e so "
op l "o id . r4 :r 4- o e$ r4 Vr in )
{
ec ue md l:
xl d o ue
" l4 -p "
s fj a i
}

cm ie "o id .r 4: r 4- xe so s $ r 4V ri n)
op l ( r. sc w oj wo je t ni n: wo Je s o"
{
ec ue md l:
xl d o ue
" l4 -p "
s fj a i
ec ue md l:
xl d o ue
" l4 -o 41 "
s fj l gj 2
}
po ie Cm ie "a a. l e- p: ." " aa .e v e. s: s- p: . " " a a.
rv d do pl j vx e: la i 10 , j v xs rl tj p jp ai 20 , jv xs
ts Cm ie "u i: ui : .. " "r .p ig rm w r: pi gt s: s rn Vr in
et o pl jn t jn t3 81 , og sr n fa eo ks r n- et $p ig e so
}
GRADLE TASKS
t s u d tU la eP md p ns n 'e Ba cN m' < {
a k pa ep od d o( ee dO : gt rn h ae ) <
d fp m es o = p oe tv ri n
e oV ri n
r jc . es o
i ( p o et gt rd e) g ta kr p ( .a T s( :e es " )
f! rj c. eG a l( .e Ts G ah )h sa k " r la e )
pm es o + " $ rn ha e
oV r in = . b ac N m"
u la A ci e. eo io i sm vn el yr p mv ri n= p me so
po dr hv sr p st re .a e Dp oe .o .e s o
o Vr in
}
t s t g tp :G ta ){
a k a( ye i T g
tg ae =v ri n
aN m
es o
ms ae = " ee s o $ v ri n"
es g
R la e f {e so }
}
t s p s TR mt (y e Gt uh {
a k uh oe oe t p: i Ps )
ps Al =t u
uh l
re
}
t s q R la e{
a k ae es
dp ns nt s, w r g t rn ha e ud tU la e Pm u la Ac ie ,u d tV r
ee d O et a , eB ac N m, pa e po dd o, p od rh v s pa ee
}
GRADLE TASK DEPENDENCIES
/ Ts D pn ec e
/ ak e ed ni s
w rm sR nf e ts
a .u t uA tr e t
t gm sR nf e wr
a .u t uA tr a
u dt Ul ae Pm m sR nf e tg
p ae p od do .u tu A tr a
u la Ac ie .u t uA tr ud t Ul ae Pm
p od r hv sm sR nf e p ae po dd o
u dt Vr in ub r ms Rn fe u la Ac i e
p ae e so Nm e. ut u At r po dr hv s
a de so Ud t . u tu At ru d tV ri nu br
d Vr i np ae ms Rn f e pa ee so N me
c mi Vr in pa e ms Rn fe a de so U dt
o mt e so Ud t. ut u At r dV ri np ae
p sT Rm t . ut u At rc mi V ri np ae
u ho e oe ms Rn fe om te so Ud t
DEMO TIME!

A SIMPLE BOOK REVIEW WEBSITE
ADDING BOOK RATINGS SCORE TO THE SITE
CREATING A FEATURE BRANCH
WRITE THE CODE... WE ALREADY KNOW HOW
TO DO THIS!
BUILD PROCESS
When you say you're code is done the fun is just beginning...
TESTING PROCESS
Are you sure you're done?
RELEASE PROCESS
Yup we're done!
DEPLOYMENT PROCESS
Oh yeah now we're done
AN ASIDE
Why is deploy separate from release?
DEPLOYMENT PROCESS: TAKE 2
Oh ****! What have we done?!?!
KNOW YOUR ROLLBACK STRATEGY BEFORE
EVERY DEPLOYMENT
ENTERPRISE ARCHITECTURE
SOME PARTING THOUGHTS ON GRADLE AND
CONTINOUS DELIVERY
REFERENCES
CODE AND PRESENTATION

GRADLE
GRADLE RELEASE PLUGIN
GIT
ARTIFACTORY
CARGO
SEMANTIC VERSIONING
ETSY'S MIKE BRITTAIN "CONTINUOUS DELIVERY: THE DIRTY DETAILS"
BOB PAULIN
BOB PAULIN / @BOBPAULIN / BOB@BOBPAULIN.COM

More Related Content

What's hot

WordPress in 30 minutes
WordPress in 30 minutesWordPress in 30 minutes
WordPress in 30 minutesOwen Winkler
 
Piotr Szotkowski about "Ruby smells"
Piotr Szotkowski about "Ruby smells"Piotr Szotkowski about "Ruby smells"
Piotr Szotkowski about "Ruby smells"Pivorak MeetUp
 
Breathe life into your designer!
Breathe life into your designer!Breathe life into your designer!
Breathe life into your designer!Cédric Brun
 
No Flex Zone: Empathy Driven Development
No Flex Zone: Empathy Driven DevelopmentNo Flex Zone: Empathy Driven Development
No Flex Zone: Empathy Driven DevelopmentDuretti H.
 
Profile Serialization IIPC GA 2015
Profile Serialization IIPC GA 2015Profile Serialization IIPC GA 2015
Profile Serialization IIPC GA 2015Sawood Alam
 
Le magazine Paranoia, Automne 2003. Vol 10, No 2, Issue 33
Le magazine Paranoia, Automne 2003. Vol 10, No 2, Issue 33Le magazine Paranoia, Automne 2003. Vol 10, No 2, Issue 33
Le magazine Paranoia, Automne 2003. Vol 10, No 2, Issue 33Guy Boulianne
 
Certificates and Credentials new
Certificates and Credentials newCertificates and Credentials new
Certificates and Credentials newsidharthbiswas9185
 
Certificates
CertificatesCertificates
CertificatesJeff CHen
 
Hsc bangla 2nd only for dinajpur
Hsc bangla 2nd only for dinajpurHsc bangla 2nd only for dinajpur
Hsc bangla 2nd only for dinajpurrakimsiddique
 
PostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit TestPostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit TestAndrea Adami
 

What's hot (19)

Winload.efi.mui
Winload.efi.muiWinload.efi.mui
Winload.efi.mui
 
WordPress in 30 minutes
WordPress in 30 minutesWordPress in 30 minutes
WordPress in 30 minutes
 
Piotr Szotkowski about "Ruby smells"
Piotr Szotkowski about "Ruby smells"Piotr Szotkowski about "Ruby smells"
Piotr Szotkowski about "Ruby smells"
 
Breathe life into your designer!
Breathe life into your designer!Breathe life into your designer!
Breathe life into your designer!
 
No Flex Zone: Empathy Driven Development
No Flex Zone: Empathy Driven DevelopmentNo Flex Zone: Empathy Driven Development
No Flex Zone: Empathy Driven Development
 
Profile Serialization IIPC GA 2015
Profile Serialization IIPC GA 2015Profile Serialization IIPC GA 2015
Profile Serialization IIPC GA 2015
 
Le magazine Paranoia, Automne 2003. Vol 10, No 2, Issue 33
Le magazine Paranoia, Automne 2003. Vol 10, No 2, Issue 33Le magazine Paranoia, Automne 2003. Vol 10, No 2, Issue 33
Le magazine Paranoia, Automne 2003. Vol 10, No 2, Issue 33
 
TicsDzm
TicsDzmTicsDzm
TicsDzm
 
Occupations 1
Occupations 1Occupations 1
Occupations 1
 
Coverletter&Resume41416
Coverletter&Resume41416Coverletter&Resume41416
Coverletter&Resume41416
 
Certificates and Credentials new
Certificates and Credentials newCertificates and Credentials new
Certificates and Credentials new
 
Procesador de textos
Procesador de textosProcesador de textos
Procesador de textos
 
Certificates
CertificatesCertificates
Certificates
 
Aaaaaa
AaaaaaAaaaaa
Aaaaaa
 
Hsc bangla 2nd only for dinajpur
Hsc bangla 2nd only for dinajpurHsc bangla 2nd only for dinajpur
Hsc bangla 2nd only for dinajpur
 
Sopas de letras varias
Sopas de letras variasSopas de letras varias
Sopas de letras varias
 
Caça palavras 8ª serie
Caça palavras 8ª serieCaça palavras 8ª serie
Caça palavras 8ª serie
 
PostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit TestPostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit Test
 
4 IATA Training
4   IATA Training4   IATA Training
4 IATA Training
 

Viewers also liked

Reactive Programming Models for IoT
Reactive Programming Models for IoTReactive Programming Models for IoT
Reactive Programming Models for IoTTodd Montgomery
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native JourneyMatt Stine
 
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVMQCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVMAzul Systems, Inc.
 
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Jérôme Petazzoni
 
Without Self-Service Operations, the Cloud is Just Expensive Hosting 2.0 - (a...
Without Self-Service Operations, the Cloud is Just Expensive Hosting 2.0 - (a...Without Self-Service Operations, the Cloud is Just Expensive Hosting 2.0 - (a...
Without Self-Service Operations, the Cloud is Just Expensive Hosting 2.0 - (a...dev2ops
 
Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Jérôme Petazzoni
 
Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reza Rahman
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014Ryan Cuprak
 
An introduction to Wardley Maps
An introduction to Wardley MapsAn introduction to Wardley Maps
An introduction to Wardley MapsSimon Wardley
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...Sonatype
 
Generation Z and the Future of Technology
Generation Z and the Future of TechnologyGeneration Z and the Future of Technology
Generation Z and the Future of TechnologyPamela Pavliscak
 

Viewers also liked (12)

Reactive Programming Models for IoT
Reactive Programming Models for IoTReactive Programming Models for IoT
Reactive Programming Models for IoT
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVMQCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
QCon London: Low latency Java in the real world - LMAX Exchange and the Zing JVM
 
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
Containers, Docker, and Security: State Of The Union (LinuxCon and ContainerC...
 
Without Self-Service Operations, the Cloud is Just Expensive Hosting 2.0 - (a...
Without Self-Service Operations, the Cloud is Just Expensive Hosting 2.0 - (a...Without Self-Service Operations, the Cloud is Just Expensive Hosting 2.0 - (a...
Without Self-Service Operations, the Cloud is Just Expensive Hosting 2.0 - (a...
 
Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...
 
Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
 
IBM BPM & ODM
IBM BPM & ODMIBM BPM & ODM
IBM BPM & ODM
 
An introduction to Wardley Maps
An introduction to Wardley MapsAn introduction to Wardley Maps
An introduction to Wardley Maps
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
 
Generation Z and the Future of Technology
Generation Z and the Future of TechnologyGeneration Z and the Future of Technology
Generation Z and the Future of Technology
 

Similar to Continuous delivery with Gradle

Using Phing for Fun and Profit
Using Phing for Fun and ProfitUsing Phing for Fun and Profit
Using Phing for Fun and ProfitNicholas Jansma
 
IPC13 Munich: Planning the Unplannable
IPC13 Munich: Planning the UnplannableIPC13 Munich: Planning the Unplannable
IPC13 Munich: Planning the UnplannableRobert Lemke
 
Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016 Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016 DISID
 
Building the Organization of the Future: Leveraging Machine Learning
Building the Organization of the Future: Leveraging Machine LearningBuilding the Organization of the Future: Leveraging Machine Learning
Building the Organization of the Future: Leveraging Machine LearningAmazon Web Services
 
Building a team of misfits innovation team - gustavo razzetti april 3, 2018
Building a team of misfits   innovation team - gustavo razzetti april 3, 2018Building a team of misfits   innovation team - gustavo razzetti april 3, 2018
Building a team of misfits innovation team - gustavo razzetti april 3, 2018Liberationist, Change Leadership
 
Portafolio Francisco Díaz Tazza
Portafolio Francisco Díaz TazzaPortafolio Francisco Díaz Tazza
Portafolio Francisco Díaz TazzaFranciscoDiazTazza
 
Interior Design Portfolio
Interior Design PortfolioInterior Design Portfolio
Interior Design PortfolioCassandra Ryan
 
Piotr Szotkowski about "Bits of ruby"
Piotr Szotkowski about "Bits of ruby"Piotr Szotkowski about "Bits of ruby"
Piotr Szotkowski about "Bits of ruby"Pivorak MeetUp
 
Passivhaus on a shoestring
Passivhaus on a shoestringPassivhaus on a shoestring
Passivhaus on a shoestringPaul Testa
 
The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?char booth
 
Type Systems on the example of TypeScript
Type Systems on the example of TypeScriptType Systems on the example of TypeScript
Type Systems on the example of TypeScriptArtur Skowroński
 
Y o u r N a m e L S P 2 0 0 - 3 2 0 ( c o u r s e I .docx
Y o u r  N a m e   L S P  2 0 0 - 3 2 0  ( c o u r s e  I .docxY o u r  N a m e   L S P  2 0 0 - 3 2 0  ( c o u r s e  I .docx
Y o u r N a m e L S P 2 0 0 - 3 2 0 ( c o u r s e I .docxherminaprocter
 
Y o u r N a m e L S P 2 0 0 - 3 2 0 ( c o u r s e I .docx
Y o u r  N a m e   L S P  2 0 0 - 3 2 0  ( c o u r s e  I .docxY o u r  N a m e   L S P  2 0 0 - 3 2 0  ( c o u r s e  I .docx
Y o u r N a m e L S P 2 0 0 - 3 2 0 ( c o u r s e I .docxodiliagilby
 
Le futur des communications par l'internet des objets - Présentation de SAGA ...
Le futur des communications par l'internet des objets - Présentation de SAGA ...Le futur des communications par l'internet des objets - Présentation de SAGA ...
Le futur des communications par l'internet des objets - Présentation de SAGA ...ioTHEATRE
 
Spacebrew MADess: Running Your Own Server
Spacebrew MADess: Running Your Own ServerSpacebrew MADess: Running Your Own Server
Spacebrew MADess: Running Your Own ServerJulio Terra
 

Similar to Continuous delivery with Gradle (20)

Using Phing for Fun and Profit
Using Phing for Fun and ProfitUsing Phing for Fun and Profit
Using Phing for Fun and Profit
 
IPC13 Munich: Planning the Unplannable
IPC13 Munich: Planning the UnplannableIPC13 Munich: Planning the Unplannable
IPC13 Munich: Planning the Unplannable
 
Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016 Spring Roo 2.0 Preview at Spring I/O 2016
Spring Roo 2.0 Preview at Spring I/O 2016
 
Building the Organization of the Future: Leveraging Machine Learning
Building the Organization of the Future: Leveraging Machine LearningBuilding the Organization of the Future: Leveraging Machine Learning
Building the Organization of the Future: Leveraging Machine Learning
 
Building a team of misfits innovation team - gustavo razzetti april 3, 2018
Building a team of misfits   innovation team - gustavo razzetti april 3, 2018Building a team of misfits   innovation team - gustavo razzetti april 3, 2018
Building a team of misfits innovation team - gustavo razzetti april 3, 2018
 
Portafolio Francisco Díaz Tazza
Portafolio Francisco Díaz TazzaPortafolio Francisco Díaz Tazza
Portafolio Francisco Díaz Tazza
 
Interior Design Portfolio
Interior Design PortfolioInterior Design Portfolio
Interior Design Portfolio
 
Piotr Szotkowski about "Bits of ruby"
Piotr Szotkowski about "Bits of ruby"Piotr Szotkowski about "Bits of ruby"
Piotr Szotkowski about "Bits of ruby"
 
Passivhaus on a shoestring
Passivhaus on a shoestringPassivhaus on a shoestring
Passivhaus on a shoestring
 
The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?
 
Type Systems on the example of TypeScript
Type Systems on the example of TypeScriptType Systems on the example of TypeScript
Type Systems on the example of TypeScript
 
Y o u r N a m e L S P 2 0 0 - 3 2 0 ( c o u r s e I .docx
Y o u r  N a m e   L S P  2 0 0 - 3 2 0  ( c o u r s e  I .docxY o u r  N a m e   L S P  2 0 0 - 3 2 0  ( c o u r s e  I .docx
Y o u r N a m e L S P 2 0 0 - 3 2 0 ( c o u r s e I .docx
 
Y o u r N a m e L S P 2 0 0 - 3 2 0 ( c o u r s e I .docx
Y o u r  N a m e   L S P  2 0 0 - 3 2 0  ( c o u r s e  I .docxY o u r  N a m e   L S P  2 0 0 - 3 2 0  ( c o u r s e  I .docx
Y o u r N a m e L S P 2 0 0 - 3 2 0 ( c o u r s e I .docx
 
Resume
ResumeResume
Resume
 
Resume
ResumeResume
Resume
 
Le futur des communications par l'internet des objets - Présentation de SAGA ...
Le futur des communications par l'internet des objets - Présentation de SAGA ...Le futur des communications par l'internet des objets - Présentation de SAGA ...
Le futur des communications par l'internet des objets - Présentation de SAGA ...
 
Spacebrew MADess: Running Your Own Server
Spacebrew MADess: Running Your Own ServerSpacebrew MADess: Running Your Own Server
Spacebrew MADess: Running Your Own Server
 
Resurgence of Technology Driven Change
Resurgence of Technology Driven ChangeResurgence of Technology Driven Change
Resurgence of Technology Driven Change
 
Cyber Security - Becoming Evil
Cyber Security - Becoming EvilCyber Security - Becoming Evil
Cyber Security - Becoming Evil
 
Hacking with Love
Hacking with LoveHacking with Love
Hacking with Love
 

More from Bob Paulin

Fundraising At Apache
Fundraising At ApacheFundraising At Apache
Fundraising At ApacheBob Paulin
 
Open Development When You're Not in Charge
Open Development When You're Not in ChargeOpen Development When You're Not in Charge
Open Development When You're Not in ChargeBob Paulin
 
Apache When You're Not in Charge
Apache When You're Not in ChargeApache When You're Not in Charge
Apache When You're Not in ChargeBob Paulin
 
Modular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterModular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterBob Paulin
 
Microservice Networking in Anger
Microservice Networking in AngerMicroservice Networking in Anger
Microservice Networking in AngerBob Paulin
 
User Groups: The Gateway to Apache
User Groups: The Gateway to ApacheUser Groups: The Gateway to Apache
User Groups: The Gateway to ApacheBob Paulin
 
What's My Modularity
What's My ModularityWhat's My Modularity
What's My ModularityBob Paulin
 
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEMDo more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEMBob Paulin
 
Adding Modularity Afterward with Embedded OSGi
Adding Modularity Afterward with Embedded OSGiAdding Modularity Afterward with Embedded OSGi
Adding Modularity Afterward with Embedded OSGiBob Paulin
 
Frontend 'vs' Backend Getting the Right Mix
Frontend 'vs' Backend   Getting the Right MixFrontend 'vs' Backend   Getting the Right Mix
Frontend 'vs' Backend Getting the Right MixBob Paulin
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBob Paulin
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and ToolsBob Paulin
 

More from Bob Paulin (12)

Fundraising At Apache
Fundraising At ApacheFundraising At Apache
Fundraising At Apache
 
Open Development When You're Not in Charge
Open Development When You're Not in ChargeOpen Development When You're Not in Charge
Open Development When You're Not in Charge
 
Apache When You're Not in Charge
Apache When You're Not in ChargeApache When You're Not in Charge
Apache When You're Not in Charge
 
Modular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterModular Open Source in Java for Now and Later
Modular Open Source in Java for Now and Later
 
Microservice Networking in Anger
Microservice Networking in AngerMicroservice Networking in Anger
Microservice Networking in Anger
 
User Groups: The Gateway to Apache
User Groups: The Gateway to ApacheUser Groups: The Gateway to Apache
User Groups: The Gateway to Apache
 
What's My Modularity
What's My ModularityWhat's My Modularity
What's My Modularity
 
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEMDo more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
 
Adding Modularity Afterward with Embedded OSGi
Adding Modularity Afterward with Embedded OSGiAdding Modularity Afterward with Embedded OSGi
Adding Modularity Afterward with Embedded OSGi
 
Frontend 'vs' Backend Getting the Right Mix
Frontend 'vs' Backend   Getting the Right MixFrontend 'vs' Backend   Getting the Right Mix
Frontend 'vs' Backend Getting the Right Mix
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and Tools
 

Recently uploaded

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Continuous delivery with Gradle

  • 1. CONTINUOUS DELIVERY WITH GRADLE BOB PAULIN / @BOBPAULIN / BOB@BOBPAULIN.COM
  • 2. ABOUT ME Independent Consultant Business Enablement Web Centric Platforms Automation
  • 3. I LOVE DELIVERING SOFTWARE I WANT TO DELIVER SOFTWARE ALL THE TIME! MULTIPLE TIMES A DAY!
  • 5. SEVERAL MAJOR ECOMMERCE SHOPS ETSY.COM DEPLOYS ABOUT 30 TIMES EACH DAY MY PERSONAL RECORD 5
  • 6. BENEFITS OF CONTINUOUS DELIVERY Shorten the time it takes from conception to customer impact Experiment more frequently Do more concurrently Delivery becomes a non-event
  • 7. DELIVERING SOFTWARE CAN BE PAINFUL! Needs to be Assembled Needs to be Deployed Needs to be Tested How can I make sure I don't break existing stuff? What happens if I do break something? What about dependent systems? How do I know what changed? How do I control what goes in and what does not?
  • 8. ALL THAT'S GOING TO TAKE ME AT LEAST 2 WEEKS!
  • 9. RELEASE MANAGEMENT 101 Consistent Build Process Functional/Regression Testing Versioning Source Code Management Deployment Process Rollback
  • 10. RELEASE MANAGEMENT 501 Config Switches Feature Branching Modular Deployment Throttling Auto Provisioning Auto-Scaling
  • 11. TOOLS TO THE RESCUE!
  • 14. A RECIPE FOR CONTINUOUS DELIVERY Gradle Artifactory Git
  • 15. GRADLE Build Tool Groovy Combines some of the best features of Ant and Maven Conventions Plugins
  • 16. ARTIFACTORY Binary Repository JEE Web App Supports Maven and Ivy Open Source and Pro Licensed
  • 18. HOW DOES ALL THIS STUFF WORK TOGETHER?
  • 19. STEPS
  • 21. A BRIEF ASIDE ON SEMANTIC VERSIONING
  • 22. LETS LOOK AT SOME CODE!
  • 23. GRADLE PLUGINS War Plugin Cargo Plugin Maven Plugin
  • 25. c ro { ag cn an rd =' o ct x ot i eI tm a7 ' pr = It gr pr en ( eP oe t( rj c .n + "d po Pr ") ot ne e. a sI tg tr p ry po et ev .e l yo t) dp oa l { el y be cn et =a tf c I ot x ri at d fl = po et fl (r i at on od ah ie rj c. i ea tf cD w la Pt ) } rm t { eo e hs nm = gt rp ry p oe te v+ "d p oH sn m" ot a e eP o et (r jc . n . el yo t ae ) ue nm = gt rp ry p oe te v+ "d p oU eN m" sr a e eP o et (r jc . n . el ys r ae ) ps wr = gt rp ry p oe te v+ "d p oP sw r" as o d eP o et (r jc . n . el ya s od ) } }
  • 26. DON'T EMBED ENVIRONMENT DATA INTO THE BUILD SCRIPT! CREATE A USER PROPERTIES FILE INSTEAD.
  • 27. DEPENDENCY MANAGEMENT FOR YOUR APPLICATION AND FOR YOUR BUILD
  • 28. b id ci t{ u ls r p rp st re { eo i oi s mv n{ ul "t p :/ s. oa y eo gc ne tg o p/ ul c} ae r h ts /o s sn tp .r /o t n/ ru sp b i" mv ne ta ( ae C nr l) } dp ne ce { ee d ni s ca sa h "a a .e ve :e v e- p: ." ls p t j vx sr l ts rl ta i2 5 , "r .r de ai p ui sg al - ag -l gn 06 1 , og g al .p .l gn : rd ec ro pu i :. ." "r .j br tr g al -i :. . " og a oe sa :r de g t0 63 } }
  • 29. d pn ec e { e ed n is df cr oe so = '. .' e a gV ri n 13 3 df sr nV ri n = '. . .E ES ' e p ig es o 3 23 RL A E df wo Je so = '. .' e r 4V ri n 16 3 df ap la ne e so = ' .' e o Al ic Vr in 10 cr o " r. oe as cr o cr oc r- br a :c ro es o " " r. o ea sc ro ag o gc dh u .a g: ag - oe ue jr $a g Vr in , og cd hu . ag cm ie "r .p ig rm w r: pi ga p $ p ig es o" " r. pi g rm wr :p op l og sr n fa eo ks r n- o: sr nV r in, og sr nf ae o ks " r. p ig rm wr :p i gc ne t$ pi g es o" "r . pi gr mw r: p ig og sr nf ae o ks rn -o t x: sr nV ri n,o gs rn fa e ok sr n" r. p ig rm wr :p i ge pe so :s r nV ri n, " r. pi gr mw r :p og sr nf ae o ks rn -x r si n$ pi ge s o" o gs rn f ae ok sr " r. p ig rm wr :p i gw b$ pi ge s o" " r. pi gr mw r :p ig wb og sr nf ae o ks rn -e : sr nV ri n, o gs r nf ae ok sr n -e " aa . ev e: sl 12 , og sf js fj a i1 56," r .l 4: c- vr s fj jv xs rl tj t :. "" r. l 4: l4 -p :. . " og sf jj l oe -l 4: " r. o ea sj cs nj c sn mp e- s: . .""o al a c: oa la c: a pl og cd hu .a k o: ak o- a pr al 19 3,a pl in ea pl i ne $o Al cm ie "r .p ig rm w r. aa sr n- a am no b1 0 4R LA E ) op l (og sr n fa eo kd t :p ig dt -o g d: .. .E ES " { ec ue md l: xl d o ue " l4 -p " s fj a i } cm ie "r .p ig rm w r: pi gc r: s rn Vr in ) op l (og sr n fa eo ks r n- oe $p ig e so "{ ec ue md l: xl d o ue ' om n- og n ' c mo s lg ig } cm ie ( r .s cw oj w oj cr :w oJ e so " op l "o id . r4 :r 4- o e$ r4 Vr in ) { ec ue md l: xl d o ue " l4 -p " s fj a i } cm ie "o id .r 4: r 4- xe so s $ r 4V ri n) op l ( r. sc w oj wo je t ni n: wo Je s o" { ec ue md l: xl d o ue " l4 -p " s fj a i ec ue md l: xl d o ue " l4 -o 41 " s fj l gj 2 } po ie Cm ie "a a. l e- p: ." " aa .e v e. s: s- p: . " " a a. rv d do pl j vx e: la i 10 , j v xs rl tj p jp ai 20 , jv xs ts Cm ie "u i: ui : .. " "r .p ig rm w r: pi gt s: s rn Vr in et o pl jn t jn t3 81 , og sr n fa eo ks r n- et $p ig e so }
  • 31. t s u d tU la eP md p ns n 'e Ba cN m' < { a k pa ep od d o( ee dO : gt rn h ae ) < d fp m es o = p oe tv ri n e oV ri n r jc . es o i ( p o et gt rd e) g ta kr p ( .a T s( :e es " ) f! rj c. eG a l( .e Ts G ah )h sa k " r la e ) pm es o + " $ rn ha e oV r in = . b ac N m" u la A ci e. eo io i sm vn el yr p mv ri n= p me so po dr hv sr p st re .a e Dp oe .o .e s o o Vr in }
  • 32. t s t g tp :G ta ){ a k a( ye i T g tg ae =v ri n aN m es o ms ae = " ee s o $ v ri n" es g R la e f {e so } } t s p s TR mt (y e Gt uh { a k uh oe oe t p: i Ps ) ps Al =t u uh l re }
  • 33. t s q R la e{ a k ae es dp ns nt s, w r g t rn ha e ud tU la e Pm u la Ac ie ,u d tV r ee d O et a , eB ac N m, pa e po dd o, p od rh v s pa ee }
  • 35. / Ts D pn ec e / ak e ed ni s w rm sR nf e ts a .u t uA tr e t t gm sR nf e wr a .u t uA tr a u dt Ul ae Pm m sR nf e tg p ae p od do .u tu A tr a u la Ac ie .u t uA tr ud t Ul ae Pm p od r hv sm sR nf e p ae po dd o u dt Vr in ub r ms Rn fe u la Ac i e p ae e so Nm e. ut u At r po dr hv s a de so Ud t . u tu At ru d tV ri nu br d Vr i np ae ms Rn f e pa ee so N me c mi Vr in pa e ms Rn fe a de so U dt o mt e so Ud t. ut u At r dV ri np ae p sT Rm t . ut u At rc mi V ri np ae u ho e oe ms Rn fe om te so Ud t
  • 36. DEMO TIME! A SIMPLE BOOK REVIEW WEBSITE
  • 37. ADDING BOOK RATINGS SCORE TO THE SITE
  • 39. WRITE THE CODE... WE ALREADY KNOW HOW TO DO THIS!
  • 40. BUILD PROCESS When you say you're code is done the fun is just beginning...
  • 41. TESTING PROCESS Are you sure you're done?
  • 43. DEPLOYMENT PROCESS Oh yeah now we're done
  • 44. AN ASIDE Why is deploy separate from release?
  • 45. DEPLOYMENT PROCESS: TAKE 2 Oh ****! What have we done?!?!
  • 46. KNOW YOUR ROLLBACK STRATEGY BEFORE EVERY DEPLOYMENT
  • 48. SOME PARTING THOUGHTS ON GRADLE AND CONTINOUS DELIVERY
  • 49. REFERENCES CODE AND PRESENTATION GRADLE GRADLE RELEASE PLUGIN GIT ARTIFACTORY CARGO SEMANTIC VERSIONING ETSY'S MIKE BRITTAIN "CONTINUOUS DELIVERY: THE DIRTY DETAILS"
  • 50. BOB PAULIN BOB PAULIN / @BOBPAULIN / BOB@BOBPAULIN.COM