git workflows: Wie integriert und testet man Feature-Zweige ohne kontinuierliche Lieferung?

9

Ich mag den von Scott Chacon beschriebenen Workflow "github flow" sehr: Ссылка

Er beschreibt, warum github nicht den von Vincent Driessen beschriebenen git-flow-Workflow verwendet ( Ссылка ), und wir verwenden es nicht aus den gleichen Gründen, wo die wichtigsten Gründe sind, dass es nicht gut mit Pull-Anfragen funktioniert und es nicht gut zur Website-Entwicklung passt, wo Sie keine offiziell veröffentlichten Versionen haben eines Softwareprodukts ", sondern die Website kontinuierlich verbessern.

Wir entwickeln eine große Online-Community in einem kleinen Team mit viel altem Legacy-Code (einige Codes sind älter als 10 Jahre) mit schlechter Testabdeckung. Wir verwenden einen ähnlichen Workflow wie github, derzeit verwenden wir Feature-Zweige für die Entwicklung und verwenden Pull-Anfragen, um sie in den Master-Zweig zu integrieren, Peer-Reviews durchzuführen, um Feedback zu bitten usw. Wenn das Feature fertiggestellt und von anderen genehmigt wurde in Master zusammengeführt. Ein paar Mal pro Woche schieben wir den Master in eine Staging-Umgebung, die von unseren Testern und Beta-Nutzern genutzt wird. Wir versuchen, den Master-Zweig alle zwei Wochen öffentlich zu machen, so dass jeder Feature-Zweig, der zusammengeführt wird, gut genug getestet werden muss und "riskante Feature-Zweige" in den letzten Tagen nicht zusammengeführt werden, bis die Veröffentlichung veröffentlicht wird.

Das ist kein perfekter Arbeitsablauf, denn wenn die Verbindung von "riskanten Features" mit dem Master erneut beginnt, können wir die Funktion "master" nicht mehr für die öffentliche Bereitstellung von Hotfixes verwenden.

Github verwendet die kontinuierliche Bereitstellung für die Bereitstellung, was für uns keine Option ist. Wir brauchen Leute, die eine Funktion testen, bevor wir sie veröffentlichen können.

Eine Pull-Anfrage kann nur in einen Zweig zusammengeführt werden. Es ist also ein einfacher Workflow bei github mit nur einem langen laufenden Zweig, der Master ist. Vielleicht sollten wir nicht alle zwei Wochen veröffentlichen, aber Pull-Anfragen freigeben, wenn sie zum Master zusammengeführt werden? Aber so ist es schwer zu testen, wir könnten die Komponententests ausführen, die wir im Feature-Zweig haben, bevor es zusammengeführt wird, und wir könnten den Zweig für Beta-Tester bereitstellen, aber das ist nicht immer so einfach, manchmal muss man es tun Datenbankänderungen manuell (wir können es nicht automatisch machen, es ist zu riskant, weil unser Staging-Server für Beta-Tester die Produktionsdatenbank verwendet), also müssen Sie warten, bis dies von den Admins erledigt wird. Und das größere Problem ist, wenn Sie nur Feature-Zweige an die Beta-Benutzer freigeben, sind sie nicht integriert, sie werden neue Features sehen, und Features werden vielleicht mehrmals am Tag entfernt. Nicht zu sagen, dass Sie keine Integrationstests ausführen können, oder Sie haben sie erst kurz vor der Veröffentlichung sehr spät ausgeführt, wenn ein Feature-Zweig einfach mit dem Master zusammengeführt wird ...

Auf der anderen Seite, wenn wir 2 lang laufende Zweige wie entwickeln und master verwenden, wie in git-flow beschrieben, können wir das Hotfix-Problem lösen, könnten wir Pull-Requests verwenden, um Feature-Zweige zu entwickeln, könnten wir eine verwenden Pull-Anforderung für einen Release-Zweig zum Zusammenführen neuerer Änderungen in den Master, aber wir können die Änderungen, die mit dem Pull-Request-Workflow erstellt werden, nicht zusammenführen.

Wie Sie im Artikel zu github flow sehen können (# 6 - sofort nach der Überprüfung bereitstellen), können github-Techniker nicht nur in der Produktion, sondern auch in einer Staging-Umgebung eingesetzt werden. Und das können nicht nur Ingenieure, sondern auch Support und Designer. Aber wie funktioniert es mit nur einem Integrationszweig? Sie benötigen keine Staging-Umgebung, wenn die letzte Pull-Anforderung ohnehin in wenigen Stunden oder Minuten in Produktion geht. Manchmal scheinen sie Feature-Zweige zum Staging bereitzustellen, das ist sinnvoll, aber sie sind nicht integriert. Was ich oben beschrieben habe, wird also in Ihrer Staging-Umgebung kommen und gehen, selbst wenn sie Änderungen vor der Bereitstellung eines Features vom Master zusammenführen Branch zur Inszenierung (denkst du, das wäre eine gute Idee?). Oder macht es Sinn, mehrere Staging-Umgebungen zu haben, eine für jeden Feature-Zweig? Aber auf diese Weise verlieren Sie wieder Vorteile durch kontinuierliche Integration. Und wie gesagt, ich glaube nicht, dass Sie das in einer Beta-Testumgebung tun können.

Ich sehe Probleme in beiden Workflows, Git-Flow und Github-Flow, Ich mag Github-Flow besser, aber es scheint schwierig, wenn Sie nicht eine gute Testabdeckung haben und mehr Tests von Menschen benötigen.

Wie kann ich also Funktionszweige integrieren und testen, wenn sie mehr Tests von Personen benötigen (qa und Beta-Tester)?

    
ak2 30.06.2013, 17:49
quelle

1 Antwort

1

Sie können mehrere Verzweigungsköpfe in einem gemeinsamen Integrationszweig ausführen lassen:

%Vor%     
LeGEC 29.10.2013 08:27
quelle