$30 off During Our Annual Pro Sale. View Details »

Delphi Tage 2014: Continuous Integration

Delphi Tage 2014: Continuous Integration

My slides for the Delphi Tage 2014 talk about Continuous Integration.

Sebastian Gingter

September 06, 2014
Tweet

More Decks by Sebastian Gingter

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. View Slide

  4. !   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  

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. ! 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)?  

    View Slide

  9. !   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  

    View Slide

  10. ! 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  

    View Slide

  11. !   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  

    View Slide

  12. !   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  

    View Slide

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

    View Slide

  14. !   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  

    View Slide

  15. !   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  

    View Slide

  16. !   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  

    View Slide

  17. !   Ü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.  

    View Slide

  18. ! 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…  

    View Slide

  19. !   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/  

    View Slide

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

    View Slide

  21. Wer  nicht  fragt  bleibt  dumm  ;-­‐)  

    View Slide

  22. ! 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/  

    View Slide

  23. Delphi  Tage  2014:  Con&nuous  Integra&on  

    View Slide