Welche Tools empfehlen Sie, Ihre Anwendung automatisch zu erstellen? [geschlossen]

8

Noch vor einigen Jahren haben die Entwickler die Builds erstellt, die an die Kunden gingen. Dies war offensichtlich eine Katastrophe aus Gründen, die zu zahlreich waren, um sie aufzulisten.

Als wir dann begannen, die Fehler unserer Wege zu lernen, suchten wir nach einer Möglichkeit, die gesamte Anwendung auf einer dedizierten Erstellungsmaschine automatisch zu erstellen. Die damalige Kultur war sehr abgeneigt, fremde Tools einzubringen, und so haben wir unser eigenes Autobau-System gebaut, indem wir eine VB-App geschrieben haben.

Dies funktionierte eine Weile, bis sich die Struktur des Projekts änderte, neue Projekte hinzugefügt wurden und wir die Anwendung auf verschiedene Arten erstellen mussten. Dann wurden die Schwächen unseres handgerollten Autobuilders offensichtlich und mit der Zeit zunehmend belastend. Diese Krankheit ist nun so weit fortgeschritten, dass die QA (die unseren Build-Prozess besitzt) den Autobuilder nicht einmal mehr warten kann, weil es mehr Programmierfähigkeiten erfordert. Jedes Mal, wenn wir ein Projekt hinzufügen oder etwas in einem bestehenden Projekt ändern, verbraucht es mehr Entwicklerzeit, nur um es zum Laufen zu bringen. Es gab Tage, an denen wir keinen Build produzieren konnten, weil das System kaputt war.

Ich bin jetzt in einer Position, in der ich diesen Prozess ändern kann, und ich versuche, das gesamte System zu verschrotten und etwas anderes an seine Stelle zu setzen. Meine Ziele sind:

  • Verfügen Sie über ein Autobuild-System, das zu einer bestimmten Zeit jeden Tag ohne menschliche Interaktion ausgeführt werden kann. Es sollte in der Lage sein, den gesamten Quellcode zu sammeln, alle Apps zu kompilieren, die Setups zu erstellen, die fertigen Produkte auf eine Netzwerkfreigabe zu setzen und möglicherweise das automatisierte Testsystem auszulösen (wir verwenden QTP).
  • Das Autobausystem sollte flexibel genug sein, um sich leicht an Änderungen im Projekt anpassen zu können, ohne dass eine Generalüberholung erforderlich ist.
  • Es sollte einfach genug sein, damit QA das System besitzen kann und keine Entwicklerressourcen benötigt, um Änderungen an der Erstellung vorzunehmen.

Was sind deine Erfahrungen? Können Sie ein Autobausystem empfehlen? Soll ich andere Ziele haben?

    
John Dibling 10.10.2008, 12:49
quelle

9 Antworten

4

Schauen Sie definitiv in MSBuild, wenn Sie auf dem Microsoft-Stack sind.

Joel geht immer darauf ein, wie großartig FinalBuilder ist, also könnte es auch einen Blick wert sein.

>     
Jeff Atwood 10.10.2008, 12:59
quelle
5

Ich verwende derzeit CruiseControl, das in Ant integriert ist, um Projekt-Builds zu steuern. Dies ermöglicht Flexibilität bei der Erstellung von Zeitplänen und bedeutet, dass Sie den gesamten Build-Prozess mithilfe von Ant-Skripts relativ einfach automatisieren können. Während der Fehlerbehebungszeiträume können Sie CruiseControl auch so einrichten, dass sie nach Quellcodeverwaltungseinträgen anstatt nach Zeitabschnitten Ausschau halten und Builds erstellen, wenn diese auftreten. Dies ermöglicht Entwicklern eine sehr schnelle Rückmeldung zu Fehlerbehebungen.

    
workmad3 10.10.2008 12:52
quelle
5

Ich verwende FinalBuilder und FinalBuilder Server für nächtliche Builds. Manchmal ist es ein wenig fehlerhaft, aber wenn Sie es für möglich halten, können Sie problemlos erweiterbare Projekte erstellen, die den X-Projekttyp erstellen können. Erstellen Sie die Datenbank aus Änderungsskripten und stellen Sie sie auf einem Testserver bereit.

Es kann auch alle Arten von seltsamen und wunderbaren Dingen behandeln, wie z. B. das Zip-Speichern eines nächtlichen Builds und das Hochladen auf ein FTP oder das automatische Erstellen von ISO-Images.

    
Steven Robbins 10.10.2008 14:15
quelle
4

Wir haben gerade von einem handgerollten Satz von Perl-Skripten zu einem Buildbot Setup migriert. Ich habe es gefunden, weil Google Chrome verwendet .

Sie können Nachtschwärmer machen, oder sie können sich mit der Quellcodeverwaltung integrieren, um einen isolierten Test zu erstellen, wann immer jemand ein Check-in macht, oder eine Vielzahl anderer Dinge. Es ist auch parallel; Sie können mehr als eine Maschine in der Build-Farm haben, entweder für spezielle Aufgaben oder nur um mehr Last zu bewältigen.

Das gesamte System ist in Python geschrieben, also plattformunabhängig, was wichtig ist, wenn Sie Builds auf mehr als einer Plattform erstellen müssen. Es kann alles, was Sie von der Kommandozeile aus tun können; Wir rufen MSBuild für Benutzermoduskomponenten, einen DDK build für Kernelmodusteile und Produkte für Unit Test Builds auf.

Out of the Box unterstützt die meisten OSS-Tools zur Quellcodeverwaltung , aber wenn Sie Verwenden Sie TFS oder etwas anderes, das Sie möglicherweise benötigen, um das Paket zu ändern, das Sie auf den Slave-Maschinen installieren.

    
Ben Straub 10.10.2008 13:22
quelle
2

Ich denke, Sie sind hier auf dem richtigen Weg.

Wer sich um Ihren automatisierten Build-Prozess kümmert, muss ein grundlegendes Verständnis davon haben, wie Ihre Lösung zusammenpasst. Das bedeutet nicht unbedingt, dass man wissen muss, wie man Code- oder Architekt-Lösungen schreibt, aber sie werden ein solides Verständnis davon benötigen, wie die Lösung kompiliert, Pakete selbst erstellt usw.

Sie müssen möglicherweise die Verantwortung für Builds zwischen Personen oder Teams teilen, um dies zu erreichen. Ich würde sagen, dass ein tägliches Build eine "Teamverantwortung" ist.

Ich würde nach einer Baseline-Build-Konfiguration suchen, die für "special use" -Builds erweitert werden kann (neben dem bloßen Erstellen einer Release-Version), z. internationalisierte Releases, fxCop / Quality Tools-Konfiguration, Build + Run Unit Tests, Continuous Integration Builds, eine Build-Konfiguration, die auf Entwickler-Workstations läuft, etc.

Stattdessen möchte ich Folgendes erreichen:

  • Automatische Versionierung, Signierung usw.
  • Möglichkeit, eine ausführliche Ausgabe (Protokollierung) zu erstellen, um beim Beheben von Build-Pausen zu helfen
  • In diesem Punkt sollte es Fehler richtig behandeln, so viele Informationen erfassen und ordnungsgemäß protokollieren
  • Konsistenz - Es sollte jedes Mal auf die gleiche Weise funktionieren, um wiederholbare Ergebnisse zu erzielen
  • Führen Sie eine saubere Umgebung mit eingeschränktem Zugriff aus
  • Gut kommentiert / dokumentiert, so dass es von neuen Mitarbeitern usw. verstanden werden kann.
  • Möglichkeit, Versionshinweise zu generieren, Metriken zu erstellen und Berichte zu erstellen (wenn diese Option verfügbar ist)
  • Möglichkeit zur Bereitstellung in mehreren Umgebungen
  • Unterstützen Sie verschiedene Möglichkeiten, Quellcode von der Quellcodeverwaltung zu erhalten, z. nach Änderungssatz, Label, Datum usw.
  • Wie für Tool-Empfehlungen habe ich FinalBuilder, Visual Build Pro, MSBuild / Team Build, nAnt, CruiseControl und CIFactory plus und gute altmodische Batch-Dateien verwendet.

    Jedes hat seine Vor- und Nachteile, ich werde keine Empfehlung abgeben, außer zu sagen, dass die Produkte mit anständiger UI-Unterstützung ein wenig einfacher zu handhaben sind, aber manchmal viel weniger leistungsstark waren. Wenn Sie mit VIsual Studio arbeiten, ist MSBuild sehr leistungsfähig, hat aber eine ziemlich steile Lernkurve.

        
    RobS 10.10.2008 14:04
    quelle
    1

    Ab Tools, die mit MS Visual Studio ausgeliefert werden, möchten Sie möglicherweise MSBuild verwenden. Zusätzliche Community Toolsets für MSBuild werden Ihnen sogar die Möglichkeit geben, Code von Subversion und zip auszugeben.

    Wir setzen es erfolgreich in unserer Firma ein. Projekte bestehen aus mehreren Lösungen mit mehr als 100 Teilprojekten. Funktioniert wie ein Zauber.

        
    Marcin Gil 10.10.2008 12:54
    quelle
    1

    Visual Build Pro ist nett, wenn Ihre Build-Maschinen Windows sind. Ich denke, dies würde die Anforderung erfüllen, die Sie an QA haben, die das System besitzen . Aber versteh mich nicht falsch, es ist ziemlich mächtig.

        
    Aardvark 10.10.2008 12:58
    quelle
    1

    Wir verwenden dazu CruiseControl.NET und UppercuT (das NAnt verwendet). UppercuT verwendet Konventionen für das Erstellen, so dass es für jemanden sehr einfach ist, durch die Beantwortung von drei Fragen (Was ist die Lösung benannt? Was ist der Pfad zur Quellcodeverwaltung? Wie lautet der Name Ihres Unternehmens?) Und Sie bauen.

    >

    Ссылка

    Einige gute Erklärungen hier: UppercuT

        
    ferventcoder 16.05.2009 18:57
    quelle
    0

    Wir verwenden den Hudson Buildbot für die Erstellung von großen Java-Webapps aus Ameisenbau-Skripten. Hudson ist ziemlich süß für unsere Zwecke. Es hat ein Master / Slave-Setup, so dass Builds gleichzeitig ausgeführt werden können (auf Timer oder On-Demand). Slave-Knoten können ein beliebiges Betriebssystem / eine beliebige Hardware-Kombination sein, vorausgesetzt, sie hat die erforderlichen Build-Tools bereits installiert und befindet sich im Netzwerk (und stürzt nicht alle 10 Minuten ab).

    Die vollständige webbasierte Oberfläche mit Live-Konsolenausgabe, Änderungsprotokollen und Artefakten aus dem Build ist im gesamten Netzwerk verfügbar, einschließlich der vorherigen Builds (falls erfolgreich). Awesomesauce!

        
    ExitToShell 04.01.2010 21:35
    quelle