Ben Reich - Continuous Integration Best Practices in Agile Environments

  • 4,826 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Does anyone know of a good tool review for CI tools? A company called cloudbees [https://www.cloudbees.com] offers a hosted solution for Jenkins. Travis CI is out there as well. Anyway, I am asking, because I see Jenkins around a lot and CloudBees around some and am looking for a good head-to-head comparison against other tools.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
4,826
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
109
Comments
1
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Continuous Integration Best Practices in Agile Environments
    Ben Reich @ AgileSparks
  • 2. Who Am I?
    15 years leadership experience in software development & startup operations with Gantt charts
    7 Years of searching and finding ways to improve life quality, predictability and efficiency
    www.linkedin.com/in/benreich
    E-mail: ben@agilesparks.com
  • 3. Ideas and best practices on implementing continuous integration in an agile way
    What is this about?
  • 4. Continuous Integration 101
    Code
    Repository
    Production Clone
    Build
    Change
    Build
    Auto
    Builder
    Publish
    Feedback
    • Small and Frequent changes
    • 5. Fast and immediate build
    • 6. Immediate feedback
    Auto
    Test
  • 7. So, why is it agile?
    Rapid
    Delivery
    Small
    Iterations
    Continuous
    Integration
    Working
    Software
    Encourage
    Cooperation
  • 8. But: Is a bunch of programmers constantly mixing some code together really getting us where we want to be?
  • 9. The Challenges of CI
    Distance from the end user
    Automatic tests are difficult
    Large and complex products
    Diverse organization
    Insufficient review
    Inter-team synchronization issues
  • 10. You know its becoming irrelevant if:
    Nobody is consuming it and people are waiting for your “real release”
  • 11. Escaped bugs
    Instant Response
    What Happens here?
    And here?
  • 12.
  • 13. “Holy Place” Culture – Done means Released
    Identify the “holy place”
    Designated delivery target
    Always up and running
    As Releasable as possible
    Replica of Production
    Demo-able and accessible
    Identify the Stakeholder
    Represents the customer
    Is motivated to succeed
    Can deliver UAT
    Has the bandwidth to review
  • 14. Put it where its accessible, demoable, won’t break but will be updated regularly in days
  • 15. The Delivery Gap
    Manual testing takes longer and there is no synchronization
    Developers need to program before testers need to test
    Large projects need constant integration testing
    Too many changes can disrupt the flow
  • 16. Ingredients to Fill the GAP
    Time Box
    WIP Limits
    Agile Communication
  • 17. Case Study – The Demo Cycle
    8 man team
    1 month sprint
    1 week demo cycle
    1 week deployment cycle
    Typically 2-4 user stories deployed per week
  • 18. The Continuous Delivery Train Station Cycle
    Integration Area
    Holy Place
    Team
    Branch
    Weekly
    Branch
    The Holy Trunk
    Commits
    Tests
    ?
    Deploy
    Branch
    Updated
    Weekly
    Branch
    Commits
    Tests
    Deploy
  • 19. The Continuous Delivery Train Station Cycle
    Integration Area
    Holy Place
    Team
    Branch
    Weekly
    Branch
    The Holy Trunk
    Commits
    Tests
    ?
    X
    Reject
    Whew!!
    Branch
    Last Good
    Branch
    Commits
    Tests
    Deploy
  • 20. The Continuous Delivery Train Station Cycle
    Integration Area
    Holy Place
    Team
    Branch
    Weekly
    Branch
    The Holy Trunk
    Commits
    Tests
    ?
    X
    Reject
    Branch
    Last Good
    Branch
    Commits
    Tests
    X
    Reject
  • 21.
  • 22.
  • 23. Swarm!!
  • 24. Electronic WIP dashboard
  • 25. Large Projects - Scrum of Scrum
    Frequency – 1 to 3 days
    What is discussed?
    What has your team done since we last met?
    What will your team do before we meet again?
    Is anything slowing your team down or getting in their way?
    Are you about to put something in another team’s way?
    The last two items will feature:
    Broken APIs
    Synchronization issues
    Current build status
    Story and Epic issues
  • 26. Working with Large Remote Teams
    jQuery
    Linux
    Is it Impossible?
    rails
    django
    Python
  • 27. Learning from Open Source
    Manage by committee
    Dedicate resources to CI
    Set strict rules and enforce them
    Enforce and encourage communication
    Never go home with a broken build
  • 28. Rules of engagement - Example
  • 29. Github Change log – Social coding
  • 30. Source Control Management Recipes
    Quiz - Which Tree Looks More Target Oriented?
    Eshel
    Brosh
    1 trunk – No Deviations
  • 31. Incremental changes
    Feat. 1
    Rev 3
    Rev 2
    Main Trunk
    Rev 1
    Feat. 1
    Rev 3
    • Rule no. 1 – Do not branch for features.
    • 32. Rule no. 2 – If you breached Rule no. 1:
    • 33. Merge quickly – Put an expiration date on branches
    • 34. Only one level
    • 35. Police the branches
    • 36. Pull Trunk before merging
    • 37. Test branches before merging
  • Hiding New Features
    Not usually recommended
    Better than Branching
    Gradual integration
    Passes some tests
    Lower Stabilization Cost
  • 38. Branching by Abstraction
    Logic Functionality
    Spaghetti
    Persistence Functionality
  • 39. Branching by Abstraction
    Abstraction
  • 40. Branching by Abstraction
    Replacement
    Old Layer
    New Layer
  • 41. Branching by Abstraction
    Replacement
  • 42. Auto testing – The Key to Success
    Automate in order
    Automate the happy path first
    Maximize coverage with data and not complex scripting
    Look for repeating manual tests
    Spec test together with PO
    Automate when functionality is frozen
  • 43. What Next?
    Visualize your value stream
    Choose tools
    Continuous Integration
    Auto testing
    Deployment
    Invest in automatic testing
    Tailor fit a process to your needs
  • 44. Questions?
    Thank You!
    www.linkedin.com/in/benreich
    E-mail: ben@agilesparks.com