Was versteht man unter
Continuous Integration, einer der wesentlichen Bestandteile der agilen Softwareentwicklung.
Software wird meist von mehreren Entwicklern parallel geschrieben. Dazu kommt oft, dass man über mehr Standorte hinweg implementiert. Damit jeder Entwickler immer den neuesten Stand der Software hat, gibt es Source Control Werkzeuge (SVN, CVS, SourceSafe, etc.).
Der Sinn eines zentralen Repositories ist neben zentraller Codeverwaltung das Sicherstellen von Qualität: kontinuierlicher Build, Tests und Integration.
Was bedeutet das?Man installiert neben dem Code Repository eine Software auf einer Maschine, die regelmässig folgende Tasks abläuft, z.B. nightly build:
* Code aus dem Repository auschecken
* Kompilieren
* Alle Test laufen lassen
* Report zusammenstellen
* Warten auf nächsten Build
Eine solche Software ist z.B
Bamboo,
CruiseControl oder
continuum und
Luntbuild.Warum das ganze?Man möchte an zentraller Stelle die Qualität der Software kontrollieren. Die Idee dahinter ist, dass man bei regelmässig erfolgreichen Build, Test und Integrations-Vorgängen auf relativ stabile Software schliessen kann. Durch den agilen Ansatz sind changes welcome, dass bedeutet in aller Regel, dass die Codebasis einem ständigen Refactoring unterliegt. Wenn man hier kein continuous integration betreibt ist man hoffnungslos verlohren.
Wie sieht das der Entwickler?Implement ->Test -> Implement ->Test -> Implement ->Test und wer errät es - genau! Es geht immer so weiter. Am Ende einer Implementierung kommt dann der Checkin in das zentrale Code Repository. Vor dem Checkin muss der Entwickler einen Update machen, um den neuesten Code bei sich zu haben, zu kompilieren und zu testen, dass seine Änderungen die bisherige Version im Repo nicht kompromtieren. Wenn das nicht der Fall ist - Commit!
Von nun an kompiliert und testet die Continuous Integration Maschine meinen Code.
Und Agnes will keiner sehen! Wenn Sie kommt, dann man ne Runde Bier zahlen ....
Agnes and friends.