Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Adopting Continuous Integration in an Ops Group

2,111 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Adopting Continuous Integration in an Ops Group

  1. 1. Adopting Continuous Integration in an Ops Group DANIEL WESTER • CHIEF ENGINEER • TURNER BROADCASTING SYSTEMS, INC • @DWESTER42a
  2. 2. Disclaimer All opinions stated are those of the presenter and does not necessarily reflect those of Turner or any of its affiliates or partners.
  3. 3. CI usage at TBS • Development occurs in a wide range of languages • A lot development teams • A lot of testing already in place • CI Server service offered by Infrastructure team
  4. 4. Why offer a CI Service? • Encourages Source Code Management usage/ practices • Creates a build-focused mentality • Standardizes the entry point to deployment
  5. 5. Some “tips” for scale, testing and deploys • Create modular artifacts • Avoid the kitchen sink type of applications • Be able to switch application versions • Reflected in our build plans
  6. 6. “ Please make sure that XXX can scale and handle traffic. Oh we’re ” launching tomorrow.
  7. 7. The problem • Limited resource availability (me) • Out of band checks usually don’t get fixed • Not popular with developers • Last minute requests — not popular with reviewers
  8. 8. DIB
  9. 9. Daniel Box
  10. 10. DOB still exists... Daniel Box
  11. 11. What is DIB? • Selenium backed • Canned version of “DOB” • Found 80% of DOB tests • 2 versions — Web-based and Maven plugin
  12. 12. Website versus in-build tests • Website version could be down for weeks • Tests in the build — reports in minutes • Developer relies on in-build tests • If in-build tests fails... There’s more time to fix...
  13. 13. What did it do? • New development teams asked for it to be added • Features added based on requests • Other tests were added by dev teams
  14. 14. Build stages
  15. 15. What didn’t work?
  16. 16. What didn’t work - fUnit
  17. 17. Lessons Learned
  18. 18. Lessons learned • In-process automated testing is key • Run tests as soon as commits are done • If you’re a downstream team, provide upstream team’s tests • CULTURE matters
  19. 19. What about Ops?
  20. 20. What is Chef? • Configuration Management system • Ruby-based • Easily expandable • Many ways of approaching things
  21. 21. User adoption
  22. 22. “ We need to have a script that gets triggered whenever there’s a ” commit and does stuff.
  23. 23. Enter CI
  24. 24. Cookbooks
  25. 25. Creating a cookbook
  26. 26. 10 minutes later...
  27. 27. Plan Stages • Lint • Test • Upload
  28. 28. Lint test • Code style guideline checker & more • Tabs versus spaces, “” versus ‘’ • Less objections to utilities reviewing code
  29. 29. Tests
  30. 30. Moving away from tagging • CI server generates artifacts and uploads • Avoid access issues • CI server becomes “trusted” source of what’s a “good” version
  31. 31. Changing the engine while driving • Lint tests (internal) • Publicly exposed lint tests • Uploads • Tests
  32. 32. Plan branches
  33. 33. Code Reviews
  34. 34. Before pull requests
  35. 35. Pull requests • Lightweight review system • Engineers choose to use pull requests • Larger changes still go through Peer Review tool • End result: More core reviewed
  36. 36. Today’s Code Flow Commit on branch Plan branch triggered Master branch triggered Pull request Upload and ready for ‘trigger’
  37. 37. End Result • Faster throughput • Repeatable process • Audit trail of when changes were made • Lightweight process with large impact
  38. 38. Thank you! DANIEL WESTER • CHIEF ENGINEER • TURNER BROADCASTING SYSTEMS, INC • @DWESTER42a
  39. 39. Rate this Talk Adopting Continuous Integration in an Ops Group Text code below to 22333 or visit http://bit.ly/18zxBVY MEH = 3B NO T BA D = 3C P R ET T Y GO O D = 3D A WES O ME = 3E To join this session, send text 136888 to

×