Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Continuous delivery with open source tools

Continuous delivery with open source tools

Presented at Fossasia 2014 in Phnom Penh Cambodia

Avatar for Sebastian Helzle

Sebastian Helzle

June 12, 2014
Tweet

More Decks by Sebastian Helzle

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. Motivation • Deliver features, changes, fi xes fast and reproducible

    • Everyone should be able to do it • Maintainable architecture • Create value for your customer
  4. 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
  5. 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
  6. 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
  7. 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…
  8. 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!
  9. 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
  10. Approval • Smoke tests • My tools • Selenium(2) •

    Curl & grep • JMeter (Performance)
  11. 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
  12. 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“
  13. 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
  14. 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
  15. 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