Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EKON 17: Continuous Integration

EKON 17: Continuous Integration

My slides for the EKON 17 / 2013 talk about Continuous Integration.

Sebastian Gingter

November 05, 2013
Tweet

More Decks by Sebastian Gingter

Other Decks in Programming

Transcript

  1. Vorab: •  Sourcen & Demos @github https://github.com/gingters/... •  Slides @speakerdeck

    https://speakerdeck.com/phoenixhawk Sebastian P.R. Gingter | @phoenixhawk
  2. Agenda •  Historie •  Was ist CI? •  Warum will

    ich CI? •  Ablauf •  Vorteile •  Der Weg hin zu CI •  Tools und Beispiele
  3. Was ist CI? •  Continuous Integration – Prozess & Praxis – Tools

    – Änderungen schnell integrieren – Idealerweise automatisiert – Inkl. Tests
  4. Warum will ich CI? •  Schon einmal vergessen, eine neue

    Datei einzuchecken? – Wie lange hat es gedauert bis das bei Kollegen auffällt? – Kollege noch da zum nachliefern? •  Schonmal Seiteneffekte produziert? – Wie lange hat es gedauert bis die auftraten? – Gab es hier schon einmal Regressions?
  5. Ablauf •  Checkout des letzten integrierten Standes •  Arbeit, Arbeit

    J •  Erst Bauen, dann schauen (lassen) (autom. Tests) •  Vor dem commit (bzw. push) – update des letzten integrierten Standes, test
  6. Ablauf •  Checkin •  Autom. Build auf dem Server • 

    Autom. Tests auf dem Server •  Grün? Okay •  Rot? Fixen -> Okay
  7. Der Weg zu CI •  „Verwaltete“ Quellcodeverwaltung – Alles benötigte im

    Repository •  Autom. Buildprozess – Siehe meine EKON 16 Slides zu MSBuild •  Selbsttestender Code – xUnit
  8. Der Weg zu CI •  M. Fowler: „Jeder commited täglich

    in den Trunk“ •  Ich: „Wehe!“ •  JEDER Commit ins zentrale Repository sollte (automatisch) integriert werden. •  Moderne CI-Systeme können auch Branches automatisiert integrieren
  9. Der Weg zu CI •  Man muss CI leben – Tooling

    kann helfen, aber es muss vorher schon funktionieren •  Der Buildprozess muss schnell sein – Maximal 10 Min. sollte das Ziel sein – Meistens sind Tests der Flaschenhals – Staged Builds / Build Pipeline kann helfen
  10. Der Weg zu CI •  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
  11. Der Weg zu CI •  Übergang zu Cont. Delivery fliessend

    •  Build-Status publik machen – z.B. Lava-Lampen (nicht zur Zustand, sondern auch Indikation der Dauer) – Gerne auch Chat-Bot, E-Mails etc. •  Mit Tooling kann auch ein Überblick über die Änderungen gewährt werden
  12. Tooling •  TeamCity / JetBrains •  Bamboo / Atlassian • 

    CruiseControl / CruiseControl.NET •  Cruise •  Jenkins / Hudson •  Team Foundation Server •  Continua CI (Finalbuilder Server als CI) •  u.v.m.