Continuous Integration
from server to cloud
Agile Software Developer at XPeppers
Erlang addicted since 2009
Twitter: @pdincau
Paolo D’Incau
Who am I?
Contents
Intro
In House
CI aaS
Drone
Conclusions
Contents
Our road to CI...but what is CI?
Your dear old blade server
Travis and friends
The new kid in town
Questions & maybe mild criticism
Once upon a time...
A team composed by several developers with
strong passions, different cultures and skills
Multiple projects ranging from mobile
applications to complex backend applications
How can we further improve the quality of our
work to get a better product?
Continuous Integration to the rescue!
Retrospective question
CI: Pragmatic definition
Codebase is owned by several developers that
continuously integrate their changes to a common
version control system.
For each integration the system runs a predefined
set of tasks automatically; these tasks may vary from
running all the tests to building all the components
confidence
+
automation
=
better product*
* with attitude and agreement
CI for me is...
Confidence
Fast feedback for my work
Easy merge of changes
I can always download a working copy
of codebase
Automation
Using IDE is not automating
Not only unit tests but also infrastructure
Reduce human error
Better product
Less time spent in fixing
Integrate now and not later
“Pay me now or pay more later”
confidence
+
automation
=
better product*
* with attitude and agreement
CI for me is...
Now you know what
CI is, but...
CI is obviously not...
“WELL, IT BUILDS ON MY MACHINE”
“PROBABLYYOU DON’T HAVEVERSION ABC OF XYZ”
“I SWEAR,TEST PASSED ON ECLIPSE”
“IT IS NOT AN ERROR, IT’S JUST A FAILURE”
“I PUSHED WITHOUT RUNNING THE TESTS”
“WHEN WAS THIS FEATURE INTRODUCED?”
“MY MACHINE IS NOT CONFIGURED”
“THE BUILD HAS BEEN BROKEN FOR 3 DAYS”
“MY TEST DB IS NOT CLEAN” “DOYOU HAVE DEFAULT MAVEN PROFILE?”
“INTEGRATION IS LAST PART”
Starting a new project?
True story I:
“Full Metal Blade”
In-House CI
Freedom to install anything we need
Full control over the build pipeline
Good if you have security constraints
In-House CI
Maintenance is up to you!
time + knowledge + patience
But well... Murphy’s law is behind the corner!
In-House to the cloud
Our blade server doesn’t scale very much...
...why don’t we go to the cloud?
Scalable system obtained with little effort
Jenkins CI
Formerly knows as Hudson
Battle tested over the years
Many plugins available...
A kid’s dream...
True story II:
“In my other life I am a developer”
CI aaS
Travis CI
First CI aaS in town
Easy integration with GitHub repos
Configuration takes minutes
On push builds starts
Travis CI
Configuration obtained by adding .travis.yml file
to your repository
Travis CI - Pros
Free for ∞ public repos and collaborators
Great variety of languages
Supports datastores and services
Travis CI - Cons
Free plan means no private repos...
... and no priority on build pipeline
Shippable CI
Startup founded in 2013
Supports both GitHub and Bitbucket
Configuration similar to Travis’ one
Shippable CI
Shippable CI - Pros
Up to 5 private repos for free
New stuff continuously added
They want your feedback
Shippable CI - Cons
Probably still not mature as Travis is
Sometimes behaves in unexpected ways
Very small story:
“Can we Go-lang to Docker?”
Drone CI
Open source project
Prevents configuration headaches
Based on Docker
Linux containers are really great!
Sometimes slower than other CIs
Collapsed mails made my crazy!
Drone CI
Conclusions
Much more than a bunch of tools
Automation is essential
Experiment and see what fits your needs best
Thank you!
Questions???

Continuous Integration from server to cloud