continuous integration from server to cloud
DESCRIPTION
Continuous Integration (CI) is a practice every team should adopt in order to solve integration problems easily and detect defects and errors early. Using CI we can growth solid software by giving greater confidence to the developers and better products to the final customers. In this slides we will briefly introduce what CI is and we will discuss some of the many different solutions we can employ when it comes to setting up a CI pipeline for our projects.TRANSCRIPT
Continuous Integrationfrom server to cloud
Agile Software Developer at XPeppers
Erlang addicted since 2009
Twitter: @pdincau
Paolo D’Incau
Who am I?
Contents
IntroIn House
CI aaSDrone
Conclusions
Contents
Our road to CI...but what is CI?Your dear old blade serverTravis and friendsThe new kid in townQuestions & 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”
“PROBABLY YOU DON’T HAVE VERSION 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” “DO YOU 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 + patienceBut 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 CIFirst CI aaS in town
Easy integration with GitHub repos
Configuration takes minutes
On push builds starts
Travis CIConfiguration 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???