Share
Embed
Continuous delivery with open source tools
Presented at Fossasia 2014 in Phnom Penh Cambodia
Sebastian Helzle
June 12, 2014
Transcript
24 slides
-
Who am I? • Web developer since Geocities went popular
(~1997) • Living in Karlsruhe, Germany since 2004 • Freelancer since 2007 and fi rst TYPO3 project • Javascript enthusiast since 2008 • DevOps architect since 2012 • TYPO3 Neos core developer since 2013 • First time in Asia two weeks ago • Cook, hiker, reader, traveler, gamer for a long time -
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, fi xes fast and reproducible
• Everyone should be able to do it • Maintainable architecture • Create value for your customer -
Code repository Automated builds Automatic tests Deployment Production Agile teams
Reporting Approval Feedback & Monitoring -
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 fi 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 fi 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) -
Maintaining the pipeline • Use tools which can automate the
setup of each step in the pipeline • Provision the (virtual) machines • Install the applications • Con fi gure the system environment • Create basic con fi 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 fi le.org/ - Fabric • https://qunitjs.com/ - QUnit • http://phpunit.de/ - PHPUnit • vagrantup.com - Vagrant -
Contacting me • Twitter: @sebobo • By mail: [email protected] •
Skype: sebobo • Github: github.com/sebobo