Donnerstag, 14. April 2011

Continuous Integration mit Flex/Actionscript 1: Einführung

In einigen Artikeln möchte ich den Weg beschreiben, von einem Projekt aus der IDE (Flashbuilder, Idea, FDT …) zu einem Projekt zu migrieren das auf einem Continuous Server regelmäßig gebaut werden kann.

Wieso sollte man überhaupt automatisieren und auf einem Continuous Integration (CI) System bauen? Wenn man alleine auf einem Rechner an einem kleinen Projekt arbeitet und aus der IDE heraus baut ohne dass Probleme auftreten, muss das vielleicht gar nicht sein. Arbeitet man aber mit mehreren Leuten an einem Projekt (die vielleicht auch gar keine entsprechende IDE haben), wechselt zwischen verschiedenen Rechnern/Betriebssystemen oder hat Abhängigkeiten (Libraries, Backend, Theme swcs), die sich oft ändern, treten sicher Probleme auf. In der einen Umgebung funktioniert etwas, in der anderen nicht, jemand macht abends eine Änderung und morgens kann keiner weiter arbeiten, weil das Projekt nicht mehr kompiliert. Der Kunde meldet Fehler und man ist nicht sicher in welcher Version diese Fehler aufgetreten/gefixt worden sind. Vielleicht muss man auch öfter ältere Projekte anfassen, wo man erstmal lange herumbastelt bis sie wieder in der IDE laufen? Oder es fehlen dauernd Dateien, wenn man ein Zip mit der “fertigen” Software zusammen stellt? Klingen diese Probleme bekannt ist es an der Zeit, sich mit Buildtools, Versionskontrolle und CI zu befassen.

Buildtools
Buildtools können Code (in unserem Fall ActionScript) kompilieren, Packages (zum Beispiel zips mit swfs und Assets) zusammen stellen, Versionen von Abhängigkeiten verwalten und auch die Versionierung der eigenen Software managen. Das ist schon einiges mehr als die IDE kann und besonders bei komplexeren Systemen eine Hilfe. Durch Buildtools kann man mit CI Systemen arbeiten. Um los legen zu können muss man sich nun für ein Tool entscheiden. Bekannte Buildtools, die für den ActionScript Bereich in Frage kommen, sind Ant und Maven. Es gibt auch noch Project Sprouts, buildr (Ruby und RubyGems Basis) und Gradle, die ActionScript Projekte bauen können.

Sollte man nicht gerade an einem Projekt arbeiten, dass die weniger bekannten Tools benutzt ,würde ich bei Ant oder Maven bleiben. Ant ist das verbreitetere System, Adobe unterstützt und nutzt Ant. Maven ist in der Java Welt inzwischen sehr populär und kann mit den FlexMojos für ActionScript genutzt werden.

Maven bringt eine großartiges Versionsmanagement für Abhängigkeiten mit und ich würde für große Projekte daher immer Maven nehmen. Maven ist allerdings komplizierter zu konfigurieren und beruht viel auf Konventionen. Um ein eher kleines Projekt CI fähig zu machen werde ich hier Ant benutzen, da es weniger aufwendig ist. Im nächsten Teil werde ich Ant installieren und ein HelloWorld Projekt aus der IDE mit Ant bauen.

Keine Kommentare:

Kommentar veröffentlichen