The slides of my talk at the Italian Agile Day 2015 about Continuous Delivery in Java
ContinuousDeliveryin JavaCose che abbiamo imparatofacendoci del maleItalian Agile Day ‘15
View Slide
@pdincauHere I am
Continuous Delivery?What is
“Continuous Delivery is a software development discipline where youbuild software in such a way that the software can be released toproduction at any time. ”Martin Fowler** martinfowler.com/bliki/ContinuousDelivery.html
“Continuous Delivery is nothing more than reducing thestress you get when you deliver business value to the customer ”My Team** Come and ask!
n tContinuous Delivery...What is
Continuous Integration
Continuous Deployment
“Safety" Deploy rules
TechnicallySpeaking
Deploy any specific working version toproduction with confidence
3 ways
Rodeo Style
No testsManual deploySnowflake environmentsNon predictable outcomeFew or very little collaboration
By the book
Fast FeedbackDone is releasedShared responsibilityEverything is automatedRepeatable and reliable process
Start small and iterate
Once upona time...
We did know...
Previous deployment process was painfulDatabase continuously changeDifferent environments
Iteration n.1NoAutomation
Environment replica on AWSManual buildManual DB migrationsDeploy with scp to remote JBoss
It was ourown choice...
...but we felt like this
No automation at allWhen was our last deploy?
A taste ofAutomationIteration n.2
Set up a basic Jenkins installationTest and build triggered on pushDB migration using LiquibaseTask to deploy on AWS
This worked for a while
Errors in MyBatis DB mappersWrong/Missing wirings
Yay! Environments are ready!
DeployEverywhereIteration n.3
New Jenkins job to run ITTrack slowest testsFirst official deploy an all environments
…with different DB drivers !#$?!
Duplication
Incorrect use of mvn profilesN-builds for N-environmentsLong build and deploy time
SingleArtefactIteration n.4
Got rid of configurations using JBoss*Unique* artefact for all environmentsDeploy version X.Y.Z from Nexus
We started getting fast
But QA were not so happyBranches, branches everywhere!
Makethem happyIteration n.5
AWS is for nightly buildsTags over branchesTrack deployed version
Acceptance tests
Explained values andmotivations to Product Owner
Remove CandidateClean UpClean UpMeet the pipelineMigrateDatabaseFetchUnit TestsBuildBuildSlow TestsIntegration TestsIntegrationDeployPublishUATQA and Publish
Where to go next
Parallel buildsEnvironments Provisioning
Things we wouldchange...
Pipeline with “placeholders”Extract configurationsExplain at the beginning the values behind
Things we woulddo again...
Build the pipeline iterativelyUse of LiquibaseShare pipeline responsibility
Recommended reading
That’s all!
Thanks@pdincau