13
www.jetbrains.com Feature Branches vs. CI (Как скрестить ежа с ужом?) Evgeniy Koshkin, TeamCity developer

Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

www.jetbrains.com

Feature Branches vs. CI (Как скрестить ежа с ужом?)

Evgeniy Koshkin, TeamCity developer

Page 2: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

2 www.jetbrains.com

How we test our products?

•  Integration Tests •  Eating Your Own Dog Food •  EAP •  QA

Page 3: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

3 www.jetbrains.com

Internal TeamCity installation

•  VCS changes count per day – 1000+ •  Build count per day – 1500+ •  Maximum test count per build – 41714 •  Registered build agents count – 126 •  Average build duration – 1 h (max 6 h) •  Average time spending in queue – 1 h

Page 4: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

4 www.jetbrains.com

TeamCity Team

•  Perforce, Subversion, TFS, Git, Hg •  Nightly deploy to production •  Are global changes even possible?

Page 5: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

5 www.jetbrains.com

Feature toggles

•  Branching by abstraction

•  New behavior can be easily disabled, sometimes on the fly

•  Same toggles are used in production

•  Increases code complexity

•  Requires careful planning of your commits

Page 6: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

6 www.jetbrains.com

Remote Run

Page 7: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

7 www.jetbrains.com

.NET Products Team (a long time ago)

•  Subversion (no Feature Branches) •  33000+ tests (R#) •  Build duration 3 – 4 h (R#) •  Who broke the build? •  42 •  ‘Remote Run’ pain

Page 8: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

8 www.jetbrains.com

‘Mixed Changes’ Problem Workarounds

•  Higher priority for personal builds •  Incremental builds •  Dedicated build agents pool

Page 9: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

9 www.jetbrains.com

.NET Products Team (our days)

•  Hg •  Feature Branches •  Green builds!

Page 10: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

10 www.jetbrains.com

Feature Branches Support in TeamCity

•  Status of all pushed branches •  Track test history per branch •  Track statistic per branch

Page 11: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

11 www.jetbrains.com

Shared .NET Platform

Page 12: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

12 www.jetbrains.com

‘HUUUUUGE Merge’ Story

Page 13: Feature Branches vs. C Как скрестить ежа с ужом?)public.jugru.org/dotnext/2014/piter/koshkin.pdf · 2016-07-11 · Feature Branches vs. C (Как скрестить

13 www.jetbrains.com

Thank you!