2008-09-12 3 views
7

Wir haben ein wiederkehrendes Problem in meinem Unternehmen mit Build Breaks in unseren Flex-Projekten. Das Problem tritt hauptsächlich auf, weil das Build, das die Entwickler auf ihren lokalen Computern ausführen, sich grundlegend von dem Build unterscheidet, das auf dem Buildcomputer auftritt. Die Entwickler erstellen die Projekte unter Verwendung von FlexBuilder/eclipse, und die Erstellungsmaschine verwendet die Befehlszeilencompiler. Zwangsläufig werden die {projectname}-config.xml und/oder die Batchdatei, die den Build ausführt, nicht mehr mit den von Eclipse verwendeten Projektdateien synchronisiert, sodass der Build auf dem Computer des Devs erfolgreich ist, aber auf dem Erstellungscomputer fehlschlägt.Building Flex-Projekte in ant/nant

Wir begannen den Pfad des Schreibens eines Dienstprogramms, um FlexBuilders Projektdateien in eine {projectname}-config.xml Datei zu konvertieren, aber es ist a) undokumentiert und b) ein schrecklicher Hack.

Ich habe in die -Dump-Config-Schalter untersucht, um die Konfigurationsdateien zu erhalten, aber das hat ein paar Probleme: 1) Die generierte Konfigurationsdatei hat absolute Pfade, die in unserer Umgebung nicht funktioniert (einige Entwickler verwenden) Macs, einige Windows-Maschinen), und 2) funktioniert nur richtig, wenn von der IDE ausgeführt, so kann nicht in den Build-Prozess eingebaut werden.

Morgen werden wir ein paar Optionen zu diskutieren, von denen keiner bin ich furchtbar gern:

a) einen Beitrag Check-in Event Subversion Fügen Sie diese absolute Bezüge zu entfernen, oder
b) fügen Sie einen Pre-Build-Prozess hinzu, der die absolute Referenz entfernt.

Ich kann nicht glauben, dass wir die erste Gruppe von Entwicklern sind, die dieses Problem lösen, aber ich kann auf Google keine guten Lösungen finden. Wie haben sich andere Gruppen mit diesem Problem befasst?

Antwort

1

Ich fand, dass eine der undokumentierten Anforderungen für die Verwendung von ant mit Flexbuilder darin bestand, die Variable FLEX_HOME in Ihrem ant-Skript zu setzen. Typischerweise innerhalb build.xml hat die folgende:

<!– Module properties –> 
<property environment=”env”/> 
<property name=”build.dir” value=”build”/> 
<property name=”swf.name” value=”MyProjectSwf”/> 
<property name=”root.mxml” value=”Main.mxml”/> 
<property name=”locale” value=”en_US”/> 
<property name=”FLEX_HOME” value=”${env.FLEX_HOME}”/> 

Dies wie ein Streit scheinen mag, aber es ist ein weitaus vernünftiger Ansatz Konsistenz zwischen verschiedenen Plattformen zu dem Erhalt und Umgebungen, wenn Sie mehrere Plattformen für Ihre Entwickler verwenden.

HTH

1

Während keine Lösung für Ihr spezielles Problem, eine Abhilfe ist eine kontinuierliche Integration Server zu verwenden.

Mit etwas wie Cruise Control können Sie einen automatischen Build-Kick jedes Mal starten, wenn jemand etwas zur Quellcodeverwaltung übermittelt. Wenn dann der Build aus irgendeinem Grund fehlschlägt (einschließlich Umgebungsinkonsistenzen), liegt es an dem Entwickler, der es kaputt gemacht hat, um es zu reparieren. Sie können es so konfigurieren, dass E-Mails bei Fehlern/Erfolgen auf verschiedene Arten gesendet werden.