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