Nee neu ist das Teil bei weitem nicht.
Ich bemängele halt, „Machen doch alle so.“ … Das mit darunter ist so eine Sache (wg. Konfiguration) abgesehen davon ist das Thema Speicher/Resourcen durchaus wieder ein Thema in Zeiten von Cloud usw. Ich bin eben dafür genau zu hinterfragen welchen Nutzen ich dadurch bekomme.
Ich bin nicht der Meinung, dass man es nicht braucht. Es gibt durchaus Fälle wo es Nutzen bringt. Ich lege halt an der Stelle den Fokus auf „Nutzen“ …Aber es einfach nur so zu machen, weil es Trend ist halte ich für den falschen Weg.
Also ein sehr konservativer Flow… (Sorry das ist jetzt „veraltet“ SCNR ;-))…
Warum mache ich denn solche Schritte von Feature auf Develop? und Dann in RC => Dann in Master???.. Releases Quartalsweise ist ja nun wirklich altbacken …Somit weit von CD etc. oder zumindest der Möglichkeit von CD entfernt. Die Frage ist warum benötige ich eine solche komplexe Branching Strategie? Wo ist das Problem? Werden noch manuelle Tests irgendwo gemacht? Welchen Nutzen liefern mit die Branches Develop/RC/ ? Was ist der Unterschied zwischen Develop/RC/Master? Welches Kriterium wird hier genommen? Vor allem der Unterschied RC<=> Master ? Also RC ist eine Version ein sog. Release Candidate ? Was ist dann auf dem Master immer nur der finale Release Stand OHNE RC ?
Unit Tests / Integrations Tests laufen bei jedem Commit auf jedem Branch zzgl. eventueller E2E Tests jede nacht noch mal auf dem Master…Bei einer entsprechenden Einschätzung eines Devs auf dem Jeweiligen Feature Branch werden die E2E/IT auch dort ausgeführt. Bisher hatten wir dieses Jahr zweimal den Fall, dass wir den Master tatsächlich kaputt hatten (Fehlgeschlagene(n) Tests). 2.5 h hat es im schlechtesten Fall gedauert…im anderen Fall hat 1.5 h gedauert…wg. E2E die sind aktuell unser Thema. (IT’s sind an einigen Stellen auch in Diskussion).
Wenn alles Unit Tests / IT’s / E2E durch sind definieren wird das als Lieferfähig (Das war am Anfang ein sehr hartes Brett was wir gebohrt haben). Das bedeutet, dass wir in der aktuellen Situation zwischen jeder Lieferung mind. 1:45 h Zeit benötigen (wenn E2E + UT + IT + Build laufen)…Das würde bedeutet, dass eine Änderung (neuer Commit) auf Master bis Lieferfähigkeit mind. 1:45 h dauert zzgl. Implementation / Analyse etc. . Also die technische Hürde hier bei 1:45 h liegt (an der arbeiten wir noch).
Jeder Branch wir gereviewed…keine Ausnahme…Verteilung im Team(10 Leute; Gleiches Spiel habe ich schon deutlich größeren Teams eingeführt.). Wir rebasen die Branches immer gegen den Master … in den Master wird ausschließlich per Fast-Forward gemerged (Keinerlei Merge commits). Ein Commit ein Feature bzw. Anpassung (Ticket basiert). Max. größe für einen Branch bzw. Ticket max. 1 PT (Aufwand)… bisherige Lieferungen Monatsweise seit 2 Wochen sind wir auf Wöchentlich; Eventuell sogar noch höhere Taktung)… Auf Grund der begrenzten Größe der Änderungen (Commits) ist somit auch noch ein Review möglich. Die Größe bzw. Menge war für viele am Anfang ein Problem (da gab es dann auch die Monster Commits…) ist aber in der Zwischenzeit (seit ca. 1.5 Jahren) ist das sehr gut geworden.
Aktuell sind wir dabei das Mergen in den Master (Auslösung durch Dev) und Rebases in den Feature Branches vollständig zu automatisieren…da das einfach Manuelle Arbeit ist die in 99.99% der Fälle automatisch geht.