Als wir unser Team gründeten, erbten wir eine Release-basierte Strategie von dem Anbieter, der ursprünglich das System entwickelt hatte, für das wir verantwortlich sein sollten. Es funktionierte bis zu dem Zeitpunkt, als unsere Kunden verlangten, dass mehrere entwickelte Funktionen nicht in einer Version enthalten sein sollten (fyi ~ 250k Codezeilen, ~ 2500 Dateien, Scrum mit XP SDLC).
Dann haben wir uns mit funktionsbasierten Zweigen befasst. Dies funktionierte auch eine Weile - etwa zwei Monate, bis wir feststellten, dass unser Regressionstestprozess mehr als zwei Wochen dauern würde, was zusammen mit der Unsicherheit darüber, was veröffentlicht werden würde, zu enormen Unannehmlichkeiten führte.
Der letzte "Nagel im Sarg" der reinen SC-Strategien kam, als wir beschlossen, dass wir 1. einen stabilen Stamm und 2. eine Produktion haben sollten, die ST-, UAT- und Regressions-getestete BINARIES enthalten sollte (nicht nur Quelle - denken Sie an CC.)
Dies führte uns dazu, eine Strategie zu entwickeln, die eine Mischung aus Feature- und Release-basierten SC-Strategien darstellt.
Wir haben also einen Kofferraum. Bei jedem Sprint verzweigen wir den Sprint-Zweig (für die nicht agilen Leute - ein Sprint ist nur ein zeitlich begrenzter Entwicklungsaufwand mit variabler Ausgabe basierend auf der Komplexität). Aus dem Sprint-Zweig erstellen wir die Feature-Zweige und die parallele Entwicklung beginnt in ihnen. Sobald die Funktionen vollständig sind und vom System getestet wurden und wir die Absicht haben, sie bereitzustellen, werden sie mit dem Sprint-Zweig zusammengeführt. Einige können über mehrere Sprints hinweg schweben, normalerweise die komplexeren. Sobald der Sprint fast zu Ende ist und die Funktionen vollständig sind, "benennen" wir den Sprint-Zweig in "Regression" um (dies ermöglicht CruiseControl, ihn ohne Neukonfiguration aufzunehmen), und dann beginnen die Regressions- / Integrationstests auf dem cc-build OHR. Wenn das alles erledigt ist, geht es in Produktion.
Kurz gesagt, funktionsbasierte Zweige werden verwendet, um Funktionen zu entwickeln, zu testen und zu testen. Der Sprint-Zweig (eigentlich der Release-Zweig) wird verwendet, um Features bei Bedarf und Integrationstest selektiv zusammenzuführen.
Hier ist eine Frage an die Community: Wir haben offensichtlich Probleme, eine kontinuierliche Integration durchzuführen, da die Entwicklung in vielen Niederlassungen stattfindet und der Aufwand für die Neukonfiguration von CruiseControl hoch ist. Kann jemand vorschlagen und beraten?