Ich habe mich in meinem Unternehmen mit dem Problem der Skalierung von CI befasst und gleichzeitig versucht, herauszufinden, welchen Ansatz ich bei CI und mehreren Niederlassungen wählen soll. Es gibt eine ähnliche Frage bei Stackoverflow, Zweigen mehrerer Features und kontinuierlicher Integration . Ich habe eine neue gestartet, weil ich mehr Diskussion und Analyse in der Frage haben möchte.
Bisher habe ich festgestellt, dass es zwei Hauptansätze gibt, die ich verfolgen kann (oder vielleicht einige andere ???).
- Mehrere Jobs (hier geht es um Jenkins / Hudson) pro Zweigstelle
- Schreiben Sie Werkzeuge, um die zusätzlichen Jobs zu verwalten
- Erstellen / Ändern / Löschen von Jobs in großen Mengen
- Benutzerdefinierte Einstellungen für jeden Job pro Zweig (SCM-URL, Dep-Management-Repos-Duplikate)
- Einige Beispiele für Personen, die dieses Problem mit Shell-Tools, Ant-Skripten und Jenkins CLI angehen. Sehen:
- http://jenkins.361315.n4.nabble.com/Multiple-branches-best-practice-td2306578.html
- http://jenkins.361315.n4.nabble.com/Is-it-possible-to-handle-multiple-branches-where-some-jobs-should-run-on-each-one-without-duplicatin-td954729. html
- http://jenkins.361315.n4.nabble.com/Parallel-development-with-branches-td1013013.html
- Hudson-Job automatisch konfigurieren oder erstellen
- Verursacht eine höhere Belastung Ihres CI-Clusters
- Der Feedback-Zyklus für Entwickler verlangsamt sich (wenn die Infrastruktur die neue Last nicht bewältigen kann).
- Schreiben Sie Werkzeuge, um die zusätzlichen Jobs zu verwalten
- Mehrere Jobs pro 2 Filialen (Entwickler & Stall)
- Verwalten Sie die beiden Sätze manuell (wenn Sie die Konf. Eines Jobs ändern, müssen Sie sie in der anderen Verzweigung ändern.)
- PITA aber zumindest so wenige zu verwalten
- Andere zusätzliche Zweige erhalten keine vollständige Testsuite, bevor sie an dev weitergeleitet werden
- Unzufriedene Entwickler. Warum sollte sich ein Entwickler um CI-Skalierungsprobleme kümmern? Er hat eine einfache Anfrage, wenn ich verzweige, möchte ich meinen Code testen. Einfach.
- Verwalten Sie die beiden Sätze manuell (wenn Sie die Konf. Eines Jobs ändern, müssen Sie sie in der anderen Verzweigung ändern.)
Wenn ich Entwicklern CI für ihre eigenen benutzerdefinierten Zweige zur Verfügung stellen möchte, benötige ich anscheinend spezielle Tools für Jenkins (API oder Shellscripts oder so?) Und die Skalierung. Oder ich kann ihnen sagen, dass sie häufiger mit DEV fusionieren und ohne CI in benutzerdefinierten Zweigen leben sollen. Welches würdest du nehmen oder gibt es andere Möglichkeiten?