O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Large Scale Development with Git and Gerrit - EclipseCon Europe 2012

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Gerrit Code Review
Gerrit Code Review
Carregando em…3
×

Confira estes a seguir

1 de 24 Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Large Scale Development with Git and Gerrit - EclipseCon Europe 2012 (20)

Anúncio

Mais de msohn (20)

Mais recentes (20)

Anúncio

Large Scale Development with Git and Gerrit - EclipseCon Europe 2012

  1. 1. Large Scale Development with Git and Gerrit EclipseCon Europe 2012, Ludwigsburg Matthias Matthias Männich Sohn
  2. 2. Git … a distributed revision control system built by the Linux project to facilitate code review JGit & EGit … Git in Java and Eclipse Gerrit … a JGit based code review system built by the Android project Copyright © Matthias Männich, Matthias Sohn
  3. 3. How this journey started… 2006 first experiments: •  Git wasn’t ready for prime time 2009 SAP joining the Git party •  join JGit, EGit, Gerrit •  piloting Git & Gerrit at Eclipse •  start Lean Development Infrastructure •  first internal pilots large SAP projects moving to Git&Gerrit •  Feb 2010 “Netweaver Cloud” on-demand platform •  Jul 2011 large C++ Engine Project Soon: generally available to all kinds of projects Copyright © Matthias Männich, Matthias Sohn
  4. 4. Lean Development Infrastructure Agile project organization •  Teams of 10 •  Large projects: Product team + n dev teams Learn from Open Source •  Tools: Git, EGit, Gerrit, Skalli Maven, Nexus, Tycho, Sonar … •  Communication: mailing lists, forums •  Contributions between projects/products Copyright © Matthias Männich, Matthias Sohn
  5. 5. Git / Gerrit for Lean DI All repositories hosted on central Gerrit server •  Used around the globe •  2k repositories, >2k users •  Scales pretty well if repository < 1G Central admins operate server and ensure standards Self Services for Projects (Skalli) •  create Git repository •  self-administer their repositories Copyright © Matthias Männich, Matthias Sohn
  6. 6. Introducing Code Review Learning from successful open source projects •  transparency through code review and mailing lists Code Review ... is new for most SAP developers ... is optional ... used by many projects today ... some teams do reviews across teams Takes time to learn Copyright © Matthias Männich, Matthias Sohn
  7. 7. Gerrit Code Review Gerrit master change 12 git git git git change 10 change 23 Developer PC Developer PC git git git git Copyright © Matthias Männich, Matthias Sohn
  8. 8. Code Review push change Gerrit notifies reviewers other teams verify change review code team Jenkins CI comment & improve vote change abandon merge change change into master Copyright © Matthias Männich, Matthias Sohn
  9. 9. Examples Large C++ Engine Project •  > 250 developers, many locations •  large code base: > 1M lines of code •  1 huge Git repository, many branches “Netweaver Cloud” on-demand platform •  ~150 developers, 3 locations •  modular Java stack •  >100 Git repositories Copyright © Matthias Männich, Matthias Sohn
  10. 10. Migrate large projects - Motivation in central VCS branching might get complicated mostly single development branch models continuous integration does not scale well tested tested error detected (introduced by?) 1 hour 30 commits/hour not every commit gets full test coverage high delay between erroneous submit and detection Copyright © Matthias Männich, Matthias Sohn
  11. 11. Migrate large projects - Considerations good training of the team is essential - convincing 80% rather easy 95% takes some time 100% … infrastructure needs will increase responsibilities might shift from quality team to development standard compliance (if applicable) Copyright © Matthias Männich, Matthias Sohn
  12. 12. Migrate large projects - Branching appealing to implement workflows inspired by •  Linux Kernel Development •  Gerrit Development •  Git Flow •  … preconditions might not be feasible •  strong hierarchies •  modular code structure •  “it’s done when it’s done” <> commercial interests Copyright © Matthias Männich, Matthias Sohn
  13. 13. Migrate large projects - Branching currently implemented and constantly evolving - lots of topic branches (> 100 active) - topic owner concept (responsibility role) - small teams - different branch lifetimes - team defined quality barriers - flat hierarchy - high level branches maintained by quality team Copyright © Matthias Männich, Matthias Sohn
  14. 14. Migrate large projects - Branching Delivery Main Topic 1 Main Topic 2 Subtopic 1 Suptopic 2 ... Subtopic 3 Suptopic 4 ... consider •  main topic branches should be distinct development areas (modularization?) •  possible delays caused by topic integration (always acceptable?) •  integration of main topics is done by quality team Copyright © Matthias Männich, Matthias Sohn
  15. 15. Migrate large projects - Branching Authority Delivery Quality Team Integration Strong Quality Barriers Subtopic 1 Suptopic 2 ... Development integration is done by developers approval is given by quality team quality barriers implemented with Gerrit Code Review pretested code states => always stable integration branch
  16. 16. Migrate large projects – Quality barriers Gerrit usage allows “pretested commits” commits have to pass (before integration!) •  Code review (human) •  Builds and tests on several platforms test coverage dependent on branch hierarchy level ideal: every quality metric on every level Copyright © Matthias Männich, Matthias Sohn
  17. 17. Migrate large projects - Recommendations there is no golden rule (sorry) get inspired by similar projects discuss and implement a solution heavily review your design and stay able to adjust shift responsibilities to expertise location •  code integration: development •  quality judgment: quality team implement extensive tool support Copyright © Matthias Männich, Matthias Sohn
  18. 18. Migrate large projects – Some rough stats 250 developers 120 topic branches (lowest level) 50k Gerrit changes per year 100 “big” build and test servers Copyright © Matthias Männich, Matthias Sohn
  19. 19. Netweaver Cloud Platform ~150 developers Cloud infrastructure Cloud services OSGi (Equinox) based Java server Tools many mid-size repositories modular Maven build versioned API p2 deployment delivery every 2 weeks Copyright © Matthias Männich, Matthias Sohn
  20. 20. Code Review & Scrum changes refined in review 2 weekly Sprints Review Planning Release Copyright © Matthias Männich, Matthias Sohn
  21. 21. Continuous Delivery 2 weekly sprint Fix Release Release Fix bugs Pull release staging Deploy to Staging factory Deploy to Factory Integration Test 2 weekly delivery Deploy to prod Q Gate Internal Prod Copyright © Matthias Männich, Matthias Sohn
  22. 22. Integrating Core Cloud Infrastructure select comp. commit(s) Main Build trigger release Comp. A linked as submodules update versions build Comp. B stage Comp. C integration test Comp. D Comp. E tag release release Copyright © Matthias Männich, Matthias Sohn
  23. 23. Summary Benefits •  (many) developers like it •  review and pre-tested commits improve quality •  always able to ship Future •  scale •  improve tools based on feedback •  make use of submodule support in Gerrit •  better support correction process •  manage contributions between projects (inner source) Copyright © Matthias Männich, Matthias Sohn
  24. 24. Q&A

×