Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Vorab: •  Sourcen & Demos @github https://github.com/gingters/... •  Slides @speakerdeck https://speakerdeck.com/phoenixhawk Sebastian P.R. Gingter | @phoenixhawk

Slide 3

Slide 3 text

Continuous Integration Infrastruktur für Sicherheit in der Entwicklung

Slide 4

Slide 4 text

Agenda •  Historie •  Was ist CI? •  Warum will ich CI? •  Ablauf •  Vorteile •  Der Weg hin zu CI •  Tools und Beispiele

Slide 5

Slide 5 text

Historie •  Continuous Integration ist eine der ursprünglichen 12 Praktiken aus „Extreme Programming“

Slide 6

Slide 6 text

Was ist CI? •  Continuous Integration – Prozess & Praxis – Tools – Änderungen schnell integrieren – Idealerweise automatisiert – Inkl. Tests

Slide 7

Slide 7 text

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?

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Ablauf •  Checkin •  Autom. Build auf dem Server •  Autom. Tests auf dem Server •  Grün? Okay •  Rot? Fixen -> Okay

Slide 10

Slide 10 text

Vorteile •  Jederzeit einen Release-Fähigen Zustand im Repository •  Fehler fallen sehr schnell auf

Slide 11

Slide 11 text

Der Weg zu CI •  „Verwaltete“ Quellcodeverwaltung – Alles benötigte im Repository •  Autom. Buildprozess – Siehe meine EKON 16 Slides zu MSBuild •  Selbsttestender Code – xUnit

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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