CI-freundliche automatisierten builds für as3/flex-Projekte
Haftungsausschluss: ich bin relativ unvertraut mit der flash-build-Prozesse, so dass einige/alle dieser möglicherweise falsch Unsinn. Bitte fühlen Sie sich frei zu schlagen alternative Ansätze.
Sind wir derzeit an der Entwicklung einer flex-web-app und bauen unsere situation ist weit vom ideal entfernt. Derzeit sind wir (wie in den einzelnen Entwickler) nur Gebäude mit FlashBuilder und die Bereitstellung manuell durch. Die Programmierer sind derzeit screaming bloody murder aus zwei Gründen, obwohl:
- Das fehlen von CI ist wie eine Reise zurück in die Steinzeit
- Wir nicht viel Pflege für FlashBuilder
(Hinweis: Wir sind nur mit Zurück, denn es war die einfachste Möglichkeit zum einrichten eines flex-Projekts in Verbindung mit Away3d und bekommen es Gebäude - /rendering-richtig-es ist eine Notlösung).
Als überwiegend .NET Entwicklung-shop, wir sind es gewohnt zu tun, continuous integration sowie continuous deployment. Im Idealfall würden wir gerne etwas vergleichbares zu diesem für unsere flash-Projekte ohne binden uns an eine bestimmte IDE.
Anforderungen:
Den build-Prozess muss sein:
- .. runnable über die Kommandozeile
- .. lauffähig auf beiden Entwickler und der CI-build-Maschinen (und sicherlich nicht, dass eine IDE!)
- .. möglichst als IDE-unabhängig wie möglich (Pragmatismus zu treten in zwar; wenn dies bewirkt, dass viel Reibung wir werden nur eine auswählen).
- .. in der Lage, um auf Windows laufen (wir entwickeln mit Windows)
Wir sind nicht dagegen, ein Hauch von Vervielfältigung oder ein paar manuelle Schritte (z.B. tarting die build-Skripte, wenn wir fügen Sie ein neues Projekt mit einer IDE, oder das generieren einer Konfiguration von einem anderen, wenn Werkzeuge sind vorhanden), aber die weniger Doppelarbeit /Wartung benötigt, desto besser.
Ich gelesen habe schon ein paar Artikel /blog-posts und beobachtete Sie einige kurze screencasts, aber die meisten von Ihnen sind sehr Dünn auf dem Boden auf, wie das build-system sitzt neben IDEs. Die meisten Artikel/screencasts haben die gleiche Formel: erstellen Sie ein "Hallo Welt" aufbauen, die Verwendung einer einzigen Datei & text-Editoren (keine IDE).
Habe ich nicht gesehen, das Thema von mehreren Bibliotheken/Projekte etc. wird angeschnitten, entweder.
Nach der Lektüre rund um das Thema für eine Weile, ich überlege mir die Untersuchung der folgenden Optionen:
Hat jemand Erfahrung mit den oben genannten Lösungen (oder andere, die ich bewusst bin), und wenn ja, was machen Sie mit Ihnen? Jede Hilfe /Zeiger geschätzt.
- Vielen Dank für die drei ausgezeichneten Antworten. Dies ist eine große Hilfe 🙂
- Schauen Sie sich unsere blog-post zu diesem Thema: techblog.dozeo.com/post/56336651309/....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe vor kurzem begonnen, mit Gradle und die GradleFx plugin und ich fiel sofort in der Liebe mit seiner Leistung und Benutzerfreundlichkeit.
Gradle ist ANT + Maven + Ivy entwickelt und ist in Erster Linie von der Befehl-Linie. Sie können:
Und das beste: es ist sehr leicht zu lernen. Ich hatte keine Kenntnisse von Maven, bevor ich angefangen habe mit Gradle und könnte sich eine multi-Projekt-build mit einigen Anpassungen arbeitet Recht schnell.
Bearbeiten (Vergleich zu Buildr AS3 und Maven)
Ich vergleichen kann dies nur eines der Projekte, die Sie erwähnt: Buildr AS3. Es scheint, beginnen, eine Philosophie, ähnlich wie Gradle ist. Aber ich habe versucht, es vor etwa einem halben Jahr und konnte nicht einmal ein einfaches "Hallo Welt" - app zu arbeiten. Ich per e-Mail den Entwickler um Hilfe zu erhalten: keine Antwort.
Im Vergleich zu GradleFx: ich hatte ein kleines forum Diskussion mit den Entwickler (auf einer eher philosophischen Thema, da ich nicht wirklich Hilfe brauchen, weil es einfach funktionierte auf Anhieb). Er antwortete innerhalb von Minuten.
Als für Maven: (für was es Wert ist) hab ich nur kurz auf einige Konfigurationen, und Sie scheinen übermäßig kompliziert, wenn ich Sie vergleichen, um ein Gradle-Skript.
Es ist eine Sache, die Maven nicht, dass Sie nicht tun können, mit GradleFx (noch) nicht. Es kann ziehen Sie die richtige Flex SDK aus einem Maven repo und bauen gegen die. Mit GradleFx Sie haben, um Ihre SDK, die lokal verfügbar sind.
Ich bin sehr vertraut mit der Verwendung von maven als Haupt-build-tool und die flexmojos plugin von Sonatype. Meine Erfahrung war ein bisschen eine Achterbahn mit flexmojos. Maven ist absolut solide, es funktioniert die ganze Zeit ohne Problem, das einzige Problem ist das flexmojos-plugin, das hat geschwankt viel zwischen den Versionen. Wenn Sie diesen Weg gehen, stellen Sie sicher, schnappen Sie sich die Quelle für flexmojos, so dass Sie sehen können, was Ihre Konfigurations-Optionen sind eigentlich das command-line-Parametern etc. Für Flex-3.x flexmojos 3.x bis zu rund 3.9 ist gut und funktioniert einwandfrei mit Hinblick auf das Ziel für die Generierung der .Projekt eclipse-Dateien, glaube es ist auch eine mojo (maven-plugin) für die Erzeugung von intelliJ IDEA Projekt-Dateien sowie andere. Wenn Sie mit Flex 4 stellen Sie mit den neuesten flexmojos 4.0RC2 aber es scheint mir, dass das Ziel für die Generierung flex/flashbuilder-Projekt-Eigenschaften ist jetzt Weg (ich bin nicht sicher, ob dies ist weil es ist ersetzt worden durch ein anderes plugin zusammen oder was ist der deal). Allerdings bauen mit maven und flexmojos erfüllt alle Ihre Ziele vor (wir verwenden es auch für den Aufbau unserer service-Ebene, also in einem einzigen mvn clean install bekommen wir ein jar verpackt in einem Krieg verpackt in ein Ohr, alles konfiguriert und ein swf, das Teil ist wirklich nett). Auch Sie tun können, continuous integration mit bamboo (oder einfach ein eigenes Skript schreiben, welches ausgelöst wird durch einen cron-job oder in windows als batch-Datei ausgeführt, mit der ein geplanter task, wenn Sie nicht über einen *nix-server-Umgebung). Lassen Sie mich wissen, wenn Sie möchten weitere Informationen, oder wenn ich etwas verpasst-Dur.
Shaun
Ich habe mit Hudson, jetzt Jenkins, mit Ant für Flex-automatisierte builds und FlexUnit testen. Jenkins hat einige wirklich nützliche plugins für die integration mit eclipse (und damit, FDT oder Zurück), Jira, SVN, Git, etc., und es ist kostenlos. Auch integrieren Sie das Ant-build-in Maven scripts, also ich habe festgestellt, dass dies eine gute und flexible Lösung für alle Zwecke, die ich bisher begegnet sind.
Dem Flex-SDK kommt mit Ant-tasks, und schreiben sogar aufwändige Ant-build-Skripts ist relativ einfach - in der Tat, ich hätte mit Ant lokal vor, und ich wiederverwenden konnte meine vorhandenen Scripte mit nur ein paar zusätzliche compiler-Optionen für " FlexUnit-Aufgaben.
Allerdings dauerte es eine Weile, bis festlegen, dass das system korrekt für unit-Tests, da bin ich mit einem headless server auf Linux, und das impliziert eine eher komplizierte Umgebung für ActionScript-tests, da Sie nur im Flash-Player. Dies, natürlich, gilt für alle CI Szenarien mit FlexUnit, unabhängig davon, welche server Sie verwenden.
Hier ist, was ich gelernt habe:
FlexUnit braucht einen standalone-debugger-version von Flash Player installiert, aber Adobe nur verteilt Binärdateien für die standard-version auf Linux. Daher die Kompilierung von der Quelle erforderlich war, und da mein server-system ist abgespeckt auf das Nötigste, es dauerte einige Mühe zu installieren und die richtigen Abhängigkeiten und Sie zu arbeiten.
Den Flash Player braucht hardware ordnungsgemäß ausgeführt wird: Es Grafiken verwendet, daher braucht es eine Grafikkarte, und klingt daher braucht es eine Soundkarte. Auf meinem headless server, und das bedeutete, ich hatte zur Installation eines VNC-host, um es zu laufen, und ich hatte zu beseitigen, werden alle tests mit sounds (die werden jetzt nur auf lokalen Rechnern). Wenn jemand kommt über eine funktionierende sound-Karte-emulation für openSuSE, die ich verwenden könnte, mit dem VNC-client - wirst du mein held für immer und ewig!
Wenn Sie sich gesetzt haben, asynchrone timeouts in Ihre unit-tests, und/oder Sie brauchen, um
setTimeout()
zu schicken, verzögerte Prozeduraufrufe, stellen Sie sicher, dass die Intervalle nicht zu kurz - ich habe Probleme mit den tests lief fein auf einem lokalen Rechner, sondern brach der build auf dem CI-server, da der Flash-Player ist deutlich langsamer, auf den VNC-client als auf eine tatsächliche Grafikkarte.Habe ich auch gefunden, dieses Letzte Problem zu sein, eine gesunde Lektion: Kriterien für unit-tests sollten nicht auf der Grundlage von Annahmen über die Leistung des Systems, oder zumindest tolerant genug, um erfolgreich auch auf einem langsamen Rechner.