Damian Brunold

ims buildsys

2010-10-03 11:18 Imagic, Programmieren, Python

Es hat lange gedauert, aber nun ist das neue ims buildsys aktiv.

Das alte System basierte auf Batchfiles, Ant-Skripts und ein paar Sprenkel Java-Code. Es war "gewachsen", schwer wartbar und konnte nicht mehr für neu aufgetauchte Anforderungen fit gemacht werden.

Darum habe ich mich entschlossen, das komplette System neu zu schreiben. Ich habe dazu Python gewählt.

Das System ist in drei Teile unterteilt: web, make und build. Web kümmert sich um das User-Interface, make verwaltet die Aufgaben, löst builds aus und checkt auch die Sourcen aus. Der letzte Teil, build, kümmert sich um das eigentlich bauen und verpacken der Komponenten.

Während web und make statisch auf dem Buildserver vorhanden sind (und manuell aktualisiert werden müssen), wird build direkt aus den ausgecheckten Sourcen verwendet. Damit sind die Buildskripte stets aktuell.

Ich bin ziemlich zufrieden mit dem neuen ims buildsys. Ich habe enorm viel über Python gelernt und habe jetzt da ein gutes Niveau erreicht. Ich konnte auch den Build so strukturieren, dass viel weniger Redundanzen vorhanden sind. Auch lassen sich nun Änderungen einfach vornehmen.

Ebenfalls toll sind die Codeanalyse-Werkzeuge, die ich gebaut und eingebaut habe. Das eine ist der Nachfolger meines Buildinfos Projektes. Da werden die Owner der Dateien ermittelt und gewisse Statistiken über die Owner und ihre Dateien erhoben und in einem navigierbaren HTML dargestellt. Beim zweiten werden mittels PMD für alle Java-Klassen drei Codemetriken erhoben: Cyclomatic Complexity, NCSS (non-commented source statements) und NPath (Anzahl Codepfade). Die Metriken werden auf Ebene Methode erhoben und ich aggregiere sie rauf über Klassen, Packages, Apps bis zu Owners. Auch hier erhält man am Ende eine navigierbare HTML-Seite. So gewinnt man einen schönen Überblick über unseren Code.