EKON 17: Continuous Integration

EKON 17: Continuous Integration

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

Ebeb5d8fd081058ba8df73d378bf83d7?s=128

Sebastian P.R. Gingter

November 05, 2013
Tweet

Transcript

  1. Sebastian P.R. Gingter | Smarthouse Media GmbH Continuous Integration

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

    https://speakerdeck.com/phoenixhawk Sebastian P.R. Gingter | @phoenixhawk
  3. Continuous Integration Infrastruktur für Sicherheit in der Entwicklung

  4. Agenda •  Historie •  Was ist CI? •  Warum will

    ich CI? •  Ablauf •  Vorteile •  Der Weg hin zu CI •  Tools und Beispiele
  5. Historie •  Continuous Integration ist eine der ursprünglichen 12 Praktiken

    aus „Extreme Programming“
  6. Was ist CI? •  Continuous Integration – Prozess & Praxis – Tools

    – Änderungen schnell integrieren – Idealerweise automatisiert – Inkl. Tests
  7. 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?
  8. 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
  9. Ablauf •  Checkin •  Autom. Build auf dem Server • 

    Autom. Tests auf dem Server •  Grün? Okay •  Rot? Fixen -> Okay
  10. Vorteile •  Jederzeit einen Release-Fähigen Zustand im Repository •  Fehler

    fallen sehr schnell auf
  11. Der Weg zu CI •  „Verwaltete“ Quellcodeverwaltung – Alles benötigte im

    Repository •  Autom. Buildprozess – Siehe meine EKON 16 Slides zu MSBuild •  Selbsttestender Code – xUnit
  12. 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
  13. 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
  14. 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
  15. 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
  16. Tooling •  TeamCity / JetBrains •  Bamboo / Atlassian • 

    CruiseControl / CruiseControl.NET •  Cruise •  Jenkins / Hudson •  Team Foundation Server •  Continua CI (Finalbuilder Server als CI) •  u.v.m.
  17. Quellen •  http://www.martinfowler.com/articles/continuousIntegration.html •  https://speakerdeck.com/phoenixhawk/ekon-16-msbuild •  http://www.jamesshore.com/Blog/Continuous-Integration-is-an-Attitude.html