Slide 1

Slide 1 text

Sebas&an  P.R.  Gingter   aka  Phoenix  ,  Moderator-­‐Team  Delphi-­‐PRAXiS   TwiAer:  @PhoenixHawk  

Slide 2

Slide 2 text

! Sourcen  &  Demos  @github   hAps://github.com/gingters/...     ! Slides  @speakerdeck   hAps://speakerdeck.com/phoenixhawk     !   Kontakt:   E-­‐Mail:  sebas&[email protected]   TwiAer:  @phoenixhawk  

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

!   Historie   !   Was  ist  und  kann  CI?   !   Was  kann  CI  Tooling  (noch)?   !   Warum  will  ich  CI?   !   Ablauf   !   Vorteile   !   Der  (lange?)  Weg  hin  zu  CI   !   Tools  und  Beispiele  

Slide 5

Slide 5 text

! Con&nuous  Integra&on   !   Ursprünglich  eine  der  12  Prak&ken  aus   „Extreme  Programming“  

Slide 6

Slide 6 text

! Con&nuous  Integra&on   !   Prozess  &  Praxis   !   Tools   !   Änderungen  schnell  integrieren   !   Idealerweise  automa&siert  

Slide 7

Slide 7 text

!   Tests  ausführen   !   Unit-­‐Tests   !   Integra&on  Tests   !   UI  Tests   !   Setups  erstellen   !   Doku  erstellen   ! Releasenotes  erzeugen   ! Deployments  ausführen   !   etc.  pp.  

Slide 8

Slide 8 text

! Schonmal  vergessen,  eine  neue  Datei   einzuchecken?   !   Wie  lange  hat  es  gedauert,  bis  es  Kollegen  auffällt?   !   War  der  Kollege  zum  nachliefern  schonmal  weg?   !   Jemals  Seiteneffekte  produziert?   !   Wie  lange  hat  es  gedauert,  bis  sie  auaraten?   !   Gab  es  schon  einmal  Regressions  (gefixte  Bugs  die   wieder  auaraten)?  

Slide 9

Slide 9 text

!   Automa&sierung   !   Nervige  manuelle  SchriAe  eliminieren   !   Fehleranfällige  manuelle  SchriAe  eliminieren   !   Beschleunigung   !   Release  Prozess  kann  Zeitaufwändig  sein   !   Bei  Smarthouse  früher  4h  pro  Produkt   !   Heute:  ca.  45  Minuten  pro  Produkt  

Slide 10

Slide 10 text

! Checkout  des  letzten  integrierten  Standes   !   „Erst  Bauen,  dann  schauen“   !   Arbeit,  Arbeit  J  (Build)   !   Schauen:  Tests   !   Schauen  lassen:  Automa&sierte  Tests   !   Vor  dem  commit  (bzw.  push)   !   Update  des  letzten  integrierten  Standes   !   gleiche  SchriAe  wie  oben  

Slide 11

Slide 11 text

!   Lokal:   !   Tests,  Update,  Tests   !   Wenn  okay:  Checkin   ! Autom.  Build  auf  dem  Buildserver   ! Autom.  Tests  auf  dem  Buildserver   !   Grün?  Okay   !   Rot?  Lokal  Fixen  -­‐>  von  vorne  

Slide 12

Slide 12 text

!   Fehler  fallen  sehr  schnell  auf   !   „Das  tut  bei  mir  aber.“  ist  keine  Ausrede  mehr   !   Jederzeit  Release-­‐fähiger  Zustand  im  Repo   !   Durch  remote-­‐Builds  &  Tests  können   unterschiedliche  Umgebungen  einfach  ergänzt   werden  

Slide 13

Slide 13 text

!   „Verwaltete“  Quellcodeverwaltung   -­‐  Alles  Notwendige  im  Repo   !   Automa&scher  Buildprozess   -­‐  siehe  EKON  16  Slides  zu  MSBuild   !   SelbsAestender  Code   -­‐  xUnit  

Slide 14

Slide 14 text

!   Mar&n  Fowler:   „Jeder  commited  täglich  in  den  Trunk“   !   Ich:   „Wehe!  Besser:  Jeder  merged  täglich  die   aktualisierte  Source  in  seinen  branch.“   !   JEDER  Commit  ins  zentrale  Repository  sollte   (automa&sch)  geprüa  werden   !   Moderne  CI-­‐Systeme  können  auch  Branches   automa&siert  getestet  werden  

Slide 15

Slide 15 text

!   Man  muss  CI  leben   ! Tooling  kann  helfen,  aber:   !   Der  Prozess  muss  vorher  schon  funk&onieren   !   Der  Build-­‐Prozess  muss  schnell  sein   !   max.  10  Minuten  sollte  das  Ziel  sein   !   Meistens  sind  Tests  der  Flaschenhals   ! Staged  Builds  /  Build  Pipeline  kann  helfen  

Slide 16

Slide 16 text

!   Tests:  In  Kopie  der  Live-­‐Umgebung   !   Soweit  möglich   ! Self-­‐Containing   !   Virtualisierung  kann  helfen   !   Ergebnisse  der  Builds  bereitstellen   !   Jeder  soll  möglichst  einfach  an  das  Ergebnis   kommen   !   z.B.  Installer  generieren,  Artefakte  bereitstellen  

Slide 17

Slide 17 text

!   Übergang  zu  Con&nuous  Delivery  fliessend   ! Build-­‐Status  publik  machen   !   Großer  Bildschirm  an  der  Wand  mit  Statusinfos   !   z.B.  Lava-­‐Lampen   (neben  Zustand  auch  Indika&on  der  Dauer)   !   Gerne  auch  Chat-­‐Bot,  E-­‐Mails  etc.   !   Mit  Tooling  kann  auch  ein  Überblick  über  die   Änderungen  gewährt  werden   ! Changesets  im  Commit  etc.  

Slide 18

Slide 18 text

! TeamCity  (von  JetBrains)   ! Bamboo  (von  Atlassian)   ! CruiseControl  /  CruiseControl.NET   !   Cruise   !   Jenkins  /  Hudson   !   Team  Founda&on  Server   ! Con&nua  CI  (Finalbuilder  Server  als  CI-­‐Lösung)   !   und  (wirklich)  viele  mehr…  

Slide 19

Slide 19 text

!   Unit  Tes&ng   ! DUnit:   hAp://sourceforge.net/projects/dunit/   !   Code  Coverage   ! Discover  for  Delphi:   hAp://sourceforge.net/projects/discoverd/   !   Delphi  Code  Coverage  (DUnit):   hAps://code.google.com/p/delphi-­‐code-­‐coverage/  

Slide 20

Slide 20 text

Anhand  von  TeamCity*       *  Disclaimer:  Keine  Verbindung  mit  JetBrains  vorhanden,   außer  das  ich  normal  zahlender  Kunde  bin    

Slide 21

Slide 21 text

Wer  nicht  fragt  bleibt  dumm  ;-­‐)  

Slide 22

Slide 22 text

! hAp://www.mar&nfowler.com/ar&cles/con&nuousIntegra&on.html   ! hAps://speakerdeck.com/phoenixhawk/ekon-­‐16-­‐msbuild   ! hAp://www.jamesshore.com/Blog/Con&nuous-­‐Integra&on-­‐is-­‐an-­‐Awtude.html   ! hAp://blog.lieberlieber.com/2010/05/25/how-­‐to-­‐set-­‐up-­‐a-­‐con&nous-­‐integra&on-­‐ server-­‐with-­‐delphi-­‐dunit-­‐and-­‐teamcity/   ! hAps://www.linkedin.com/pulse/ar&cle/20140629125251-­‐19117079-­‐dunit-­‐i-­‐know-­‐ you-­‐know-­‐me-­‐let-­‐s-­‐get-­‐to-­‐know-­‐each-­‐other-­‐beAer   ! hAps://code.google.com/p/delphi-­‐code-­‐coverage/  

Slide 23

Slide 23 text

Delphi  Tage  2014:  Con&nuous  Integra&on