Published on March 2, 2014
Continuous delivery with open source tools presented by Sebastian Helzle
Overview • Motivation for continuous delivery • Steps in the delivery pipeline and • What each step means • The tools I use in each step • Tools for keeping the delivery environment running • Summary
Motivation • Deliver features, changes, ﬁxes fast and reproducible • Everyone should be able to do it • Maintainable architecture • Create value for your customer
The delivery pipeline
Agile teams Code repository Feedback & Monitoring Automated builds Automatic tests Deployment Approval Production Reporting
Code repository • Centralized source code management • For reviewing and checking what’s going on in your codebase • My tool: Git & Gitlab! • Your private Github • Big community • Easy to setup and maintain • Supports teams
Continuous integration Server • Manages the whole CI process • My tool: Jenkins • Centralized application for running all tasks in the process (after commit) • Very customizable • Can run in a distributed environment • Has lots of plugins available including Chuck Norris plugin
Automated builds • Run after each commit • Report to the team if there are problems • Give every build a unique ID which is traceable throughout the pipeline to production
Automated Tests • Assure the quality of your codebase • Will be triggered for every build • Provides reporting on code quality and other metrics • Some tests can also be run as monitoring for the production system • Promote builds which pass the tests • Inform the team when a tests fails and show the overall quality over a timespan • My tools: • Selenium(2)! • PHPUnit, JUnit, PyUnit, QUnit, etc…
Deployment • Requires no manual steps (if possible) • Only deploy promoted builds • Promote builds on success • Conﬁgurations should be • in version control • easy to setup • Should be reproducible by everyone in your company • Requires good reporting, because errors will happen!
My primary deployment tool: TYPO3 Surf • Distributed as TYPO3 Flow package • Can be part of the project itself • PHP-based conﬁguration (not necessarily a good thing) • Code is readable and can be extended easily • Rollbacks when any error happens while deploying • Keeps revisions on the target system • Deployment via rsync, packaging, Git • Run customized tasks at every deployment step • Alternatives: • Fabric - Python based tool for deployment and remote administration tasks
Approval • Smoke tests • My tools • Selenium(2)! • Curl & grep! • JMeter (Performance)
Tools for keeping the delivery environment running
Maintaining the pipeline • Use tools which can automate the setup of each step in the pipeline • • Install the applications • Conﬁgure the system environment • • Provision the (virtual) machines Create basic conﬁgurations for projects My tool: Chef! • Write cookbooks and recipes in ruby for setting up reproducible environments • Large community & good support • Lots of free cookbooks you can use
Simulate the the pipeline • Try out new tools & updates • Check if the tools work together • Simulate deliveries • Break things and try again • My tool: Vagrant! • Check out the talk by Michael Knoll (Saturday): „Reproducible and portable work environments with Vagrant & Chef“
Summary • We want continuous delivery because • We know what we are delivering • We can deliver it fast • We can tackle the steps which create headaches • It reduces stress -> we have a better life
Problems you will face • The tools I presented aren’t trivial • • First steps will be hard -> don’t give up! Motivate your people to play around with the systems • • • Best learning effect from my experience Spreads the knowledge in your company Making your customer invest in the improvements of your pipeline
Links • gitlab.org - Gitlab • docs.seleniumhq.org - Selenium • jenkins-ci.org - Jenkins • http://www.getchef.com/chef/ - Chef • http://docs.fabﬁle.org/ - Fabric • https://qunitjs.com/ - QUnit • http://phpunit.de/ - PHPUnit • vagrantup.com - Vagrant
Contacting me • Twitter: @sebobo • By mail: firstname.lastname@example.org • Skype: sebobo • Github: github.com/sebobo
Thank you! ! Any questions left?
Simplify Continuous Delivery. Open source continuous delivery server to model and visualize complex workflows with ease Download Now.
Continuous Delivery ... Since then it has spawned a wide market of development tools ... made its way to many delivery teams by way of open source ...
Continuous Delivery ... their Continuous Delivery tool GoCD, now Open Source!. ... concepts central to Continuous Delivery regardless of tools. ...
Continuous Delivery Using ... Introducing the Tools. Thankfully, implementing continuous delivery doesn ... Jenkins is an open-source Continuous ...
6 open source continuous integration tools. ... Another interesting addition is the ability to visualize the entire continuous delivery workflow ...
How to Keep Using Your Favorite Open Source Tools in the Continuous Delivery Era. ... All the above named open source tools were created in the days when ...
... englisch continuous integration) ... (Continuous Delivery) ... CABIE – eine in Perl geschriebene Open-Source-Erstellungs- und Integrationsumgebung, ...
ThoughtWorks Announces Go Continuous Delivery ... Apache 2.0 open source license. Go enables continuous ... our continuous delivery ...
CI/CD for documentation in OpenStack. ... Anne Gentle - Anne Gentle works in open source projects with the ... Continuous integration and delivery for ...