Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Creative Branching Models for Multiple Release Streams

Nuance Communications is making the move from SVN to Git! Why? To take advantage of its strong branching and merging capabilities... and to keep their developers happy. With wild variations between each product's release model, they have multiple releases of one or more components in play at a given time. So they had to get creative with a branching model. This talk will discuss choosing the right Git branching model for each of your release streams, and managing multiple releases using Bitbucket (including Stash), JIRA, Bamboo, and Maven.

  • Identifiez-vous pour voir les commentaires

Creative Branching Models for Multiple Release Streams

  1. 1. MATT SHELTON • ENGINEERING MANAGER • NUANCE COMMUNICATIONS • @MATTSHELTON Creative Branching Models for Multiple Release Streams
  2. 2. MAVEN GIT MIGRATION SUCCESS? KEY TAKEAWAYS Agenda
  3. 3. Git Migration
  4. 4. BRANCHING MODELS WHY GIT? GIT-FLOW Git Migration
  5. 5. If you don’t like speed, being productive and more reliable coding practices then you shouldn’t use Git. NICOLA PAOLUCCI, ATLASSIAN “ ”
  6. 6. Tools Integration Solid integration with JIRA Software, Bamboo, Crucible is paramount. AutomationBranch Isolation The team wanted three things: Keep developers productive and unblocked while letting the team be flexible about what makes it into a release. Nothing should be manual if at all possible. The development process should “just work”.
  7. 7. BRANCHING MODELS WHY GIT? GIT-FLOW Git Migration
  8. 8. A branching what?
  9. 9. Feature Branching Models Single Branch Feature Branching Master Master
  10. 10. Branching Models Continuous Deliverystaging release feature feature
  11. 11. Branching Models Product Releases BitBucket Server Team bit.ly/bitbucket-server-branching feature feature master release/2.3 release/2.2 bugfix
  12. 12. Don’t go it alone! www.atlassian.com/git/ Deeper Dive Coming Soon! Git Workflows a-la-carte bit.ly/gitalacarte - Summit 2013 Git Microsite
  13. 13. BRANCHING MODELS WHY GIT? GIT-FLOW Git Migration
  14. 14. We chose git-flow bit.ly/git-flow-nvie Git-Flow Extension github.com/nvie/gitflow Original Post
  15. 15. Git-Flow Branching Model
  16. 16. Master with Active Develop Branch Master Develop 2.0
  17. 17. Hotfix Branches Hotfix Master Develop 2.0 2.0.1
  18. 18. Feature Branches Hotfix Master Develop Feature 2.0 2.0.1
  19. 19. Release Branches Release Hotfix Master Develop Feature 2.0 2.0.1 2.1
  20. 20. Support Branches Release Hotfix Master Develop Feature 2.0 2.0.1 2.1 ReleaseReleaseRelease Support 1.9.1 1.9.21.9
  21. 21. Matt… why do you need this?
  22. 22. Maven
  23. 23. BUILD ISOLATION DEPENDENCY! VERSIONS! NOTHING IS SIMPLE… Maven
  24. 24. Project Dependencies product M product C product B common product T
  25. 25. Artifact Repositories Hotfix Master Develop Feature Release Support NONE - Does Not Build libs-snapshot libs-snapshot NONE - Does Not Build libs-release libs-release libs-release libs-qa SNAPSHOT / PRE-RELEASE RELEASE libs-staging libs-staging libs-staging
  26. 26. So what’s the big deal?
  27. 27. Different Product Dev With Shared Common develop feature/BA-7 feature/AB-1 common-2.1.0-SNAPSHOT Artifactory Repository common-2.1.0-SNAPSHOT.jar
  28. 28. Version Pollution 2.1.0-SNAPSHOT 2.1.0-AB-1-SNAPSHOT 2.1.0-AB-7-SNAPSHOT develop feature/AB-1 2.1.0-AB-1-SNAPSHOT 2.1.0-AB-7-SNAPSHOT feature/BA-7
  29. 29. What about automation?
  30. 30. 2.1.0-SNAPSHOT Modify on Branch/Merge 2.1.0-SNAPSHOT 2.1.0-SNAPSHOT 2.1.0-AB-1-SNAPSHOT 2.1.0-AB-1-SNAPSHOT feature/AB-1 develop
  31. 31. Modify on Branch Only 2.1.0-SNAPSHOT 2.1.0-SNAPSHOT 2.1.0-AB-1-SNAPSHOT feature/AB-1 develop 2.1.0-SNAPSHOT ours
  32. 32. BUILD ISOLATION DEPENDENCY! VERSIONS! NOTHING IS SIMPLE… Maven
  33. 33. libs-snapshot Artifact Repositories Hotfix Master Develop Feature Release Support NONE - Does Not Build libs-snapshot libs-feature/${git.branch} NONE - Does Not Build libs-release libs-release libs-release libs-qa RELEASESNAPSHOT / PRE-RELEASE libs-staging libs-staging libs-staging
  34. 34. Matt! That sounds so simple!
  35. 35. BUILD ISOLATION DEPENDENCY! VERSIONS! NOTHING IS SIMPLE… Maven
  36. 36. © 2002 Warner Brothers via giphy
  37. 37. That plugin was our last hope. No. There is another. ME (NOT STAR WARS) “ ”
  38. 38. © 2006 Laney Griner via memeurl
  39. 39. Open Source?
  40. 40. Success?
  41. 41. Git-Flow + Support Branch Release Hotfix Master Develop Feature ReleaseReleaseRelease Support
  42. 42. WORKFLOW INEFFICIENCIES GREAT STUFF Success!
  43. 43. Create in JIRA Software Branches are easy! Pull, Checkout, Work!
  44. 44. Bamboo Branch Detection The Tools Work Well Together Code Reviews HipChat Alerts JIRA ties all of the other tools together for one view All feature builds in one plan Feature branches discovered when they are created Team can review in Crucible Build failures and feature branch creation alerts keep team on top of their status
  45. 45. Merge Sanity Check Pull Requests Developer Gate Most pull-requests are approved quickly since code has been approved Approver can quickly review the diff to make sure it lines up with their understanding. New teams, click-happy folks, etc.
  46. 46. WORKFLOW INEFFICIENCIES GREAT STUFF Success!
  47. 47. Create in JIRA Software Branching is Repetitive Pull, Checkout, Work! Once you’re done branching, anyway… Create in JIRA Software Create in JIRA Software Create in JIRA Software Branch Name Matters Extension is purposefully picky Each project’s artifacts need to be in the same branch-repository
  48. 48. Where are my builds? Extra Clicks To See All Builds Empty Plans Required Some build plans only run branch builds which are not displayed immediately. The “master” branch build plans require an empty plan that does nothing.
  49. 49. Key Takeaways
  50. 50. For Product Release Branching, git-flow is great!
  51. 51. Maven is a tough adversary, but can be convinced to be an ally.
  52. 52. Regardless of your branching model, the tools work well together.
  53. 53. Happy Developers Make Good Software
  54. 54. Thank you! MATT SHELTON • ENGINEERING MANAGER • NUANCE COMMUNICATIONS • @MATTSHELTON

×