[JAVA] AoneFlow führt neue Automatisierungs- und Zweigstellenverwaltungstools ein

AoneFlow vereint die Stärken von Trunk Based und ** Git Flow ** und führt neue Automatisierungs- und Zweigstellenverwaltungstools für die rechtzeitige Veröffentlichung hochwertiger Softwareprodukte ein.

** Automatisierung und neue Filialverwaltungsprozesse revolutionieren die Softwareentwicklung. ** ** ** image.png

Während TrunkBased und GitFlow die Anforderungen der meisten Entwickler an die Zweigstellenverwaltung hinsichtlich einfacher Integration und überschaubarer Anforderungsfunktionen erfüllen können, ist Alibaba ohne manuelle Eingriffe effizienter. Ich brauchte ein System und verbesserte Tools für die Filialverwaltung. Als Reaktion darauf hat das technische Team von Alibaba einen neuen Filialverwaltungsmodus entwickelt, AoneFlow. AoneFlow vereint die Stärken von Trunk Based und Git Flow und führt neue Automatisierungs- und Zweigstellenverwaltungstools ein, um die rechtzeitige Veröffentlichung hochwertiger Softwareprodukte sicherzustellen.

Filialverwaltungsinfrastruktur: TrunkBased und GitFlow

AoneFlow basiert teilweise auf der Struktur und Funktionalität von TrunkBased und GitFlow, den von Softwareentwicklern am häufigsten verwendeten Zweigverwaltungstechniken. Beide Systeme bieten nützliche Funktionen, und AoneFlow, das auf vorhandenen Systemen basiert, hat den Vorteil, dass es Softwareentwicklern vertraut ist.

TrunkBased Der Vorteil von TrunkBased ist die kontinuierliche Integration. Seine Struktur besteht aus einem einzelnen Stammzweig und vielen Freigabezweigen. Jeder Release-Zweig wird aus dem Trunk an einer bestimmten Version des Festschreibungspunkts für die Online-Bereitstellung und den Hotfix erstellt. Es gibt keinen expliziten Feature-Zweig. Während GitFlow jedem Entwickler erlaubt, einen lokalen Zweig zu haben, schließt TrunkBased kurzlebige Feature-Zweige nicht aus. Diese Funktion wird jedoch von TrunkBased-Entwicklern nicht häufig verwendet.

TrunkBased ist in den letzten Jahren aufgrund einiger Nachteile bei GitFlow weniger beliebt geworden. Erstens, wenn zu viele Teams auf demselben Trunk codieren, wird bei der Veröffentlichung möglicherweise ein Fehler angezeigt. FeatureToggle wurde als Lösung implementiert, erfordert jedoch eine häufige Integration und eine ordnungsgemäße Testabdeckung, was die Fähigkeiten des Entwicklungsteams überfordert. Daher wird TrunkBased häufig in SaaS-Projekten verwendet, in denen Sie nicht mehrere frühere Versionen gleichzeitig verwalten müssen. Bei diesen Projekten handelt es sich in erster Linie um kleine Dienste, die einer Microservice-Transformation unterzogen wurden.

Der TrunkBased-Modus hat zwei Entwicklungen. OneFlow und Multi-Trunk. OneFlow verwendet viele der gleichen Funktionen wie TrunkBased, jedoch mit strengeren Definitionen des Betriebsflusses und zusätzlichen Funktionen wie dem Hotfix-Zweig. Multi-Trunk verwendet zusätzlich zum Dual-Trunk- und Fixed-Development-Zweig einen Zweig mit fester Freigabe.

GitFlow GitFlow hat eine andere Struktur als TrunkBased. Es besteht aus einem Trunk-Zweig und einer Reihe von Feature-Zweigen, Release-Zweigen und Hotfix-Zweigen. GitFlow wurde bisher von prozessorientierten Unternehmen aufgrund seiner klaren operativen Definition in jeder Phase am häufigsten verwendet. GitFlow ist jedoch nicht benutzerfreundlich und enthält viele langwierige Zusammenführungsregeln. Zusammenführungskonflikte und Probleme mit Integrationstests werden häufig kritisiert.

Eine weniger bekannte Filialverwaltungsmethode ist Github Flow, die im Wesentlichen auf TrunkBased basiert und einen persönlichen Warehouse- und Pull-Request-Code-Merge-Vorgang hinzufügt. Dieser Vorgang ähnelt dem Hinzufügen einzelner Filialen zum selben Lager und ist daher ideal für verteilte Teams. GithubFlow hat auch eine eigene Entwicklung: GitlabFlow nutzt Bereitstellungen in mehreren Umgebungen und ordnet Lagerhäuser und Niederlassungen in diesen Umgebungen zu.

Neue Entwicklung: AoneFlow

Die Struktur, Funktionalität und der Prozess von AoneFlow unterscheiden sich in mehreren wichtigen Bereichen von TrunkBased und GitHub.

Wie sein Vorgänger strebt AoneFlow eine einfache kontinuierliche Integration (TrunkBased) und eine überschaubare Anforderungsfunktionalität (GitFlow) an. Außerdem wird die Grundstruktur der drei Zweigstellentypen beibehalten: Trunk-Zweig, Feature-Zweig und Release-Zweig.

AoneFlow beginnt jedoch mit seinem Vorgänger, indem es drei Kernregeln für Workflows zur Zweigstellenverwaltung festlegt.

  1. Bevor Sie beginnen, erstellen Sie einen funktionalen Zweig aus dem Trunk.
  2. Kombinieren Sie Feature-Zweige zu einem Release-Zweig.
  3. Führen Sie nach der Freigabe in der formalen Online-Umgebung den entsprechenden Freigabezweig in den Trunk ein, fügen Sie dem Trunk Tags hinzu und entfernen Sie den dem Freigabezweig zugeordneten Feature-Zweig.

Regel 1. Erstellen Sie einen Feature-Zweig

Der Feature-Zweig von AoneFlow wurde von GitFlow übernommen. Wenn ein neuer Job gestartet wird (Erstellen einer neuen Funktion, Beheben eines Fehlers usw.), wird aus dem Trunk, der die neueste Release-Version darstellt, ein Feature-Zweig mit dem Präfix "feature /" erstellt. Codeänderungen werden in diesem Zweig festgeschrieben. Jeder Job entspricht einem Feature-Zweig, und Änderungen können nicht direkt in den Trunk übernommen werden, wie in der folgenden Abbildung dargestellt.

image.png Erstellen eines Feature-Zweigs

Regel 2. Verzweigen Sie den Zweig

Diese Regel ist die innovativste Leistung von AoneFlow.

Mit vorhandenen Zweigverwaltungsmethoden zieht GitFlow den abgeschlossenen Feature-Zweig zurück in die gemeinsame Hauptlinie (Entwicklungszweig), führt ihn zusammen und zieht den Release-Zweig aus der gemeinsamen Hauptlinie. TrunkBased wartet ebenfalls darauf, dass die erforderliche Funktionalität für den Trunk-Zweig entwickelt wird, und zieht den Release-Zweig von einer bestimmten Stelle im Trunk-Zweig.

Im Gegensatz dazu zieht AoneFlow einen neuen Zweig aus dem Trunk und führt alle Feature-Zweige zusammen, die auf die Freigabe oder Integration warten, um einen Freigabezweig zu erstellen (normalerweise gekennzeichnet durch das Präfix "release /"). ).

Obwohl es einfach ist, hat es eine breite Palette von Anwendungen. Release-Zweige sind flexibel und können mithilfe von Fließband-Tools einer bestimmten Umgebung zugeordnet werden (z. B. wird ein Release- / Test-Zweig mit einer Bereitstellungstestumgebung gekoppelt). Dieses Tool verbindet das Scannen in Codequalität und automatisierte Teststufen mit einer Vielzahl von Umgebungen. Schließlich wird das Ausgabebereitstellungspaket direkt in der entsprechenden Umgebung freigegeben.

image.png

Bildung eines Freisetzungszweigs

Auf einer höheren Ebene können Release-Zweige mehreren Umgebungen zugeordnet werden, um beispielsweise schrittweise und offizielle Releases zu verketten. Dies fügt einen menschlichen Inspektionsschritt hinzu, um die Zuverlässigkeit sicherzustellen. Sie können auch eine kontinuierliche integrierte Fertigungslinie erstellen, indem Sie Funktionszweige gemäß einem iterativen Plan zuordnen, durch iterative Entwicklung einen festen Release-Zweig erstellen und eine Reihe von Umgebungen mit dem Fließband des Release-Zweigs verknüpfen. Sie können die Auswirkungen von TrunkBased auch implementieren, indem Sie alle Funktionszweige zuordnen und alle Commits dem Integrationstest widmen.

Darüber hinaus ist die Funktionskonfiguration des Release-Zweigs dynamisch und einfach anzupassen.

Beispielsweise muss ein kleines Unternehmen, das "agile Operationen" einsetzt, möglicherweise Feature-Releases aufgrund von Änderungen in der Marktstrategie abbrechen oder Features aufgrund eines Fehlers in letzter Minute entfernen. Dies erfordert normalerweise das manuelle "Überprüfen des Codes" oder das Entfernen der zugehörigen Verpflichtungen, die einzeln in den Entwicklungs- oder Trunk-Zweigen zusammengeführt wurden.

Im Gegensatz dazu können Sie mit AoneFlow in weniger als einer Minute einen Release-Zweig erstellen. Dazu wird der ursprüngliche Release-Zweig gelöscht, ein neuer Release-Zweig mit demselben Namen aus dem Trunk-Zweig gezogen und die Feature-Zweige zusammengeführt, die beibehalten werden müssen. Diese Reihe von Vorgängen kann automatisiert werden und ist sauber und frei von Verunreinigungen.

Schließlich können Sie mit den lose gekoppelten Release-Zweigen mehrere integrierte Umgebungen basierend auf einer Kombination verschiedener Funktionen integrieren und testen. Es ist auch nützlich, um zu verwalten, wann Funktionen in verschiedenen Umgebungen bereitgestellt werden. Trotz der lockeren Kopplung besteht eine Korrelation zwischen den Freisetzungszweigen. Release-Schritte für Test-, integrierte, Pre-Release-, Phased- und Online-Formalumgebungen werden normalerweise nacheinander ausgeführt. Dies bedeutet, dass der Benutzer die Anforderungen festlegen kann und nur die Merkmale, die die Validierung in der vorherigen Umgebung bestanden haben, übertragen und in der nächsten Umgebung bereitgestellt werden können. Das Ergebnis ist ein trichterförmiger Feature-Release-Stream.

Darüber hinaus hat Alibaba eine einheitliche Plattform für die Automatisierung und Migration der Funktionskombination zwischen Release-Zweigen geschaffen, wie im nächsten Abschnitt beschrieben.

Regel 3. Geben Sie die Online-Bereitstellung der Zweigstelle frei

Wenn die Release-Zweig-Montagelinie die Bereitstellung der formalen Online-Umgebung abgeschlossen hat, bedeutet dies, dass die entsprechende Funktion freigegeben wurde. In diesem Fall muss der Freigabezweig in den Trunk zusammengeführt werden. Um eine große Anzahl früherer Feature-Zweige in Ihrem Code-Warehouse zu vermeiden, sollten Sie auch Feature-Zweige bereinigen, die bereits online sind.

In AoneFlow ist die neueste Version des Trunk-Zweigs immer dieselbe wie die Online-Version (ähnlich wie bei GitFlow). Wenn der Benutzer frühere Versionen zurückverfolgen möchte, muss er lediglich das entsprechende Versionsetikett im Trunk-Zweig finden.

image.png

Struktur: Regel 3

Zusätzliche Regeln

AoneFlow fügt neben den Regeln 1-3 einige praktische Operationen hinzu. Wenn Hotfix beispielsweise online geschaltet wird, besteht die normale Verarbeitungsmethode darin, einen neuen Release-Zweig (entsprechend dem Hotfix-Zweig) zu erstellen, der der Online-Umgebung entspricht. Anschließend wird eine temporäre Montagelinie für den Freigabezweig erstellt, sodass Inspektionen und Rauchtests vor der Freigabe automatisch durchgeführt werden können.

Mit AoneFlow können Sie den Speicherort des Versionsetiketts auf dem Trunk-Zweig finden und direkt dort einen Hotfix-Zweig erstellen. Dadurch kann der Benutzer einige wichtige Vorgänge effektiv ausführen.

Optimierung der Benutzererfahrung

Alibaba ist konsequent bemüht, den Filialmanagementprozess zu optimieren. Kürzlich haben wir Best Practices für die Java-Entwicklung dokumentiert und im Alibaba Java Development Manual zusammengefasst. Dies ermöglichte es dem gesamten Team, die Java-Entwicklung zu standardisieren und die Qualität und Effizienz ihrer Arbeit zu verbessern.

Die Standardisierung half auch bei der Lösung aufgabenbasierter Probleme wie der Neuerstellung des Release-Zweigs. Für die Neuerstellung des Release-Zweigs ist eine Fusion erforderlich. Anschließend muss der Code kompiliert werden, um ein neues Bereitstellungspaket zu generieren. Wenn die Softwarefunktionalität jedoch auf Softwarepaketen von Drittanbietern basiert, kann das Softwareverhalten inkonsistent sein.

Als Lösung haben wir unseren Codierungsrichtlinien die Regel hinzugefügt, dass Online-Release-Code keine abhängigen Pakete verwenden darf, die "SNAPSHOT-Versionen" oder inoffizielle Releases enthalten. Diese Richtlinien geben unserem Team mehr Kontrolle über die Qualität der von ihnen hergestellten Produkte.

Wir haben auch eine Reihe von Tools hinzugefügt, um es Entwicklern zu erleichtern. Für die AoneFlow-Plattform müssen Entwickler beispielsweise keine Zweige mehr manuell mit Git-Befehlen erstellen, zusammenführen und ändern. Manuelle Arbeit ist fehleranfällig und zeitaufwändig. Die AoneFlow-Plattform bestreitet diese Probleme, indem sie den gesamten F & E-Prozess steuert und eine Reihe integrierter Servicekomponenten hinzufügt, um die F & E-Effizienz zu steigern. Diese Plattform bietet mehrere wichtige Vorteile.

Vollständige Prozessautomatisierung

Die AoneFlow-Plattform bietet Anforderungsvorschläge, die Aufteilung von Anforderungen in Aufgaben, das Erstellen von Funktionszweigen online, das Generieren von Release-Zweigen durch Zusammenfassen von Funktionszweigen, das automatische Erstellen einer Testumgebung basierend auf Vorlagen, verspäteter Betrieb und Wartung (O & M) usw. Einführung der Automatisierung des Filialverwaltungsprozesses für die Funktionalität von.

Im Front-End garantiert AoneFlow die Normalisierung von Feature-Branch-Namen durch Steuerung der Feature-Branch-Zuordnung und der Überwachungsanforderungen. Das Backend verwaltet die Zuordnungen und Bereitstellungen von Freigabezweigen, um die Zuverlässigkeit der Quellversion sicherzustellen. Insgesamt wickelt AoneFlow etwa 80% der Online-Bereitstellungen der Alibaba Group ab.

Verbesserte Montagelinie für Freigabezweige

Es gibt viele Codezweige im AoneFlow-Lebenszyklus. Das Erstellen und Aktualisieren dieser Zweige erfordert komplexe Aktionen. Durch die Automatisierung dieses Prozesses gehen Qualität und Effizienz nicht durch menschliches Versagen verloren.

AoneFlow verwendet eine automatisierte CI / CD-Fertigungslinie, um Codezweige zu erstellen und zu aktualisieren. Diese Montagelinie verknüpft alle unabhängigen Codezweige im Lebenszyklus und leitet sie effizienter auf die beabsichtigte Funktionalität (z. B. Festschreibungscode für Integrationstests). .. Dies gilt insbesondere für Release-Zweige, die einer bestimmten Bereitstellungsumgebung zugeordnet werden können. Sie können den neuen Code überprüfen, der in der Verzweigung zusammengeführt wurde, und ihn effizienter bereitstellen.

In einem idealen Zweigstellenverwaltungsszenario sollte jeder Zweig mit einer Montagelinie gekoppelt werden, die seiner Rolle entspricht. Der Release-Zweig von AoneFlow ist im Vergleich zu GitFlow relativ fest und einfach zu integrieren, sodass fast alle verfügbaren Fließband-Tools mit AoneFlow kompatibel sind.

AoneFlow enthält außerdem zusätzliche Funktionen wie Codeüberprüfungen, Sicherheitsüberprüfungen und Online-Bereitstellungen am Fließband, um die Benutzererfahrung des Entwicklungsteams zu verbessern und zu optimieren.

Verbesserte Wartung der Zweigstellenverbände

Das Aufrechterhalten der Zuordnung zwischen dem Feature-Zweig und dem Forschungszweig ist ein einzigartiges Problem, mit dem sich AoneFlow befasst.

Wenn Sie Änderungen an einer vorhandenen Feature-Kombination vornehmen, ist es wichtig, sich daran zu erinnern, aus welchem Feature-Zweig der Release-Zweig stammt. Wenn beispielsweise ein Feature aus einem bestimmten Release-Zweig entfernt wird, werden mehrere Feature-Zweige, einschließlich derjenigen, die dieses Feature nicht enthalten, zusammengeführt und durch den ursprünglichen Release-Zweig ersetzt. Es ist schwierig und zeitaufwändig, manuell aufzuzeichnen, welche Zweige zusammengeführt wurden.

AoneFlow enthält mehrere Automatisierungsfunktionen, die diesen Prozess verbessern. Wenn eine bestimmte Feature-Kombination in einer Low-Level-Release-Umgebung (z. B. Integrationstests) validiert wird, wird der Inhalt direkt in den entsprechenden Release-Zweig in der High-Level-Umgebung (z. B. Pre-Release) migriert. Dadurch wird sichergestellt, dass die Online-Version die Validierung vor der Veröffentlichung, die Vorabversion die integrierte Validierung und andere wichtige Prozesse bestanden hat. Dies verbindet alle Release-Zweige in einer Reihe. Dieser Vorgang kann mit einem normalen Git-Befehl abgeschlossen werden, mit den visuellen Tools von AoneFlow jedoch intuitiver.

Darüber hinaus kann AoneFlow den Status von Zweigen im Code-Warehouse einheitlich anzeigen, z. B. Maschineninformationen und Betriebsaufzeichnungen der Bereitstellungsumgebung des entsprechenden Zweigs.

Überblick

Aloneas AoneFlow ist eine Weiterentwicklung des Filialmanagements, die die Stärken von TrunkBased und GitFlow nutzt.

Die Vorteile dieser neuen Filialverwaltungsmethode sind:

AoneFlow bietet Softwareentwicklern eine flexible Plattform, um sich an den dynamischen Lebenszyklus der Zweigstellenverwaltung anzupassen, effizient zu arbeiten und hochwertige Softwareprodukte freizugeben. Ermöglicht Ihnen mehr Kontrolle über.

Alibaba Tech Aus erster Hand, Details, detaillierte Informationen zur neuesten Technologie von Alibaba → Suchen Sie auf Facebook nach "Alibaba Tech"

Recommended Posts

AoneFlow führt neue Automatisierungs- und Zweigstellenverwaltungstools ein
Befehlsmechanismus und Verwaltungstools