continuous integration - print("hello, world · continuous integration johannes seitz -...
TRANSCRIPT
![Page 1: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/1.jpg)
ContinuousIntegration
JohannesSeitz- @Ookami86
![Page 2: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/2.jpg)
WhatisContinuousIntegration?ThatJenkinsjob may benecessary,butnotsufficient.
![Page 3: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/3.jpg)
Waysofworkinginateam
Integrating often Integrating ina„BigBang“
Allchanges integratedCommitsBranches
![Page 4: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/4.jpg)
Integrating ina„BigBang”e.G.Long-lived feature branching,Some Implementations of“GitFlow“
Pros: Cons:
• Branchhandlingcomplexity• Mergescangetverycomplex• Uncalculable “Stabilisation”phases• Refactoringmaymakeyouunpopular
• Cherry-pickingfeaturesforreleaseiseasy• Individualdeveloperskeepfocussedontheir
branh
![Page 5: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/5.jpg)
https://martinfowler.com/bliki/FrequencyReducesDifficulty.html
„Ifithurts,doitmoreoften!“
![Page 6: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/6.jpg)
Integrating oftene.G.Trunk-Based Development,Shortlived (1-3days) feature branching
Pros: Cons:
• Cherry-pickingfeaturesforreleaseisharder• Individualteammembersmayfeellessproductive• Storiesneedtobesmallenough
• Mergeconflictsareusuallysmall• Refactorings areeasier• Littletonobranchingoverhead• Thereisnochaoticintegrationphase• Featuresdon’trotinabandonedbranches• Enablescontinuousdelivery
![Page 7: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/7.jpg)
![Page 8: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/8.jpg)
Thecontroversy
• https://jamesmckay.net/2011/07/why-does-martin-fowler-not-understand-feature-branches/
• https://continuousdelivery.com/2011/07/on-dvcs-continuous-integration-and-feature-branches/
Taste everything [all advice] but only swallow what tastes right for you. – Virginia Satir, the „Mother“ of Systemic Family Therapy
![Page 9: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/9.jpg)
Techniques fora morefrequentintegration
![Page 10: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/10.jpg)
![Page 11: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/11.jpg)
BigRefactoringsContinuously integrated
![Page 12: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/12.jpg)
![Page 13: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/13.jpg)
Don‘trip outtheoldcode(yet)!
https://printhelloworld.de/posts/refactoring-in-baby-steps/
![Page 14: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/14.jpg)
Branch byabstraction
![Page 15: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/15.jpg)
Branch byabstraction
![Page 16: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/16.jpg)
Branch byabstraction
![Page 17: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/17.jpg)
Branch byabstraction
![Page 18: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/18.jpg)
Branch byabstraction
Pros• Compare oldvsnewinProd• Integrating early andoften• Refactorings „enpassant“• Use@Deprecatedor[Obsolete]
Cons• Should beused sparsely• Worksbestwithwhole teamapproaches
![Page 19: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/19.jpg)
https://printhelloworld.de/posts/refactoring-in-baby-steps/
Babysteps
![Page 20: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/20.jpg)
Unfinished FeaturesContinuously integrated
![Page 21: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/21.jpg)
Featuretoggles (Changes)
![Page 22: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/22.jpg)
Featuretoggles (Newfeatures)
UI
Domain
DB
![Page 23: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/23.jpg)
Featuretoggles
Pros:• Allows canary releases offeatures
• Featuresareintegrated allthetime
• Productisalways shippable• Unfinished features caneasilybetested
Cons:• Toggles become aformoftechdebt unless removed
• Painful todoifyourarchitectureisanonmodular mess
![Page 24: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/24.jpg)
DBschema changesContinuously integrated
![Page 25: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/25.jpg)
Schemaversioning
ImageSource:https://flywaydb.org/getstarted/how
![Page 26: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/26.jpg)
Schemamigrations
https://martinfowler.com/articles/evodb.html
![Page 27: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/27.jpg)
Schemaversioning &migrations
Pros:• Schemasareversioned• Everyone canchangetheSchemaincrementally
• Schemaisinversion control• Schemaisdocumented
Cons:• Migrations bear arisk• YourDBAmay object• Adding migrations cancauseraceconditions thatneedmanual handling
![Page 28: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/28.jpg)
![Page 29: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/29.jpg)
LibraryChangesContinuously integrated
![Page 30: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/30.jpg)
Versionpinning
![Page 31: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/31.jpg)
Upgradepains:Github
Source:https://githubengineering.com/upgrading-github-from-rails-3-2-to-5-2/
„In total the project took a year and a half to upgrade from Rails 3.2 to Rails 5.2“
„Upgrading Rails on an application as large and as trafficked as GitHub is no small task“
Lessons learned: Upgrade early and upgrade often.
![Page 32: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/32.jpg)
VersionPinning
• Dependency changes don’tbreakyourbuild
Cons:• Youaremissingoutonfeatures• Youaremissingoutonbugfixes• Securityholes creep in• Theinevitable updatetothelatest version willbeVERYpanful
Pros:
![Page 33: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/33.jpg)
Canarybuilds
![Page 34: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/34.jpg)
CanaryBuilds
Pros:• Feedbackaboutintegrationpains ahead
• Encourages continuousintegrationwithout breakingthebuild
• Greatforsecuritypatches
Cons:• Twopipelines• Worksbestwithcomprehensivetestsuites
![Page 35: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/35.jpg)
ServiceChangesContinuously integrated
![Page 36: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/36.jpg)
Consumer-Driven Contracts
ServiceProvider
Consumer
Consumer
…
![Page 37: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/37.jpg)
Consumer-Driven Contracts
Source:https://docs.pact.io/getting_started
![Page 38: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/38.jpg)
Consumer-Driven Contracts
ServiceProvider
Consumer
Consumer
…
![Page 39: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/39.jpg)
Consumer-Driven Contracts
Pros:• Producerscantellwhen theybreakcompatibility
• Producerscantellwhichconsumers willbreak
Cons:• Consumers andproducers ofservices needtocollaborate
• APIsneedtoexpose(some)oftheirstateforgoodcontracttests
![Page 40: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/40.jpg)
Thankyouforyourattention!
JohannesSeitz,Blog:printhelloworld.de,Twitter:@Ookami86
![Page 41: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/41.jpg)
![Page 42: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/42.jpg)
BonusSection!
![Page 43: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/43.jpg)
ServicetestdoublesContinuously tested
![Page 44: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/44.jpg)
IntegrationContract Tests
ImageSource:https://martinfowler.com/bliki/ContractTest.html
![Page 45: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/45.jpg)
SharedcodeContinuously integrated
![Page 46: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/46.jpg)
Monorepositories
• KönnengutbenutztwerdenumAbhängigkeitenzwischenSystemensynchronzuhalten.
![Page 47: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/47.jpg)
BuildbreakingcommitsRejected before theyreach therepo
![Page 48: Continuous Integration - print("Hello, World · Continuous Integration Johannes Seitz - @Ookami86. What is Continuous Integration? That Jenkins jobmay be necessary, but not sufficient](https://reader033.vdocument.in/reader033/viewer/2022043017/5f39a0c8a6e2ae45a368363f/html5/thumbnails/48.jpg)
Pre-tested commits