Es gibt ein grundlegendes Problem bei der kontinuierlichen Integration (Continuous Integration, CI), das sich perfekt in Ihrer Frage widerspiegelt: CI-Praktiken sind schwer zu implementieren und zu verteidigen, da die Einrichtung von CI-Serversoftware nicht trivial ist und es auch nicht trivial ist, Ihre Projekte über ein CI zum Laufen zu bringen Server. Damit wird es schwierig zu erkennen, wo der Gewinn bei der Akzeptanz von CI überhaupt liegt.
Bei CI geht es vor allem um Einsicht und Qualität. Ein gutes CI bringt Sie Ihrem Projekt näher, gibt Ihnen ein angemessenes Feedback zu Qualitätsmetriken, Dokumentation, Einhaltung von Codierungsstandards usw. Es sollte Ihnen die Tools zur Verfügung stellen, mit denen Sie all dies einfach visualisieren und auf einen Blick erkennen und leicht erkennen können Verknüpfen Sie eine Reihe von Änderungen mit einem bestimmten Snapshot aller dieser Projektmetriken.
Es geht nicht nur darum, Unit-Tests durchzuführen. Ganz und gar nicht! Was mich zur Qualität bringt. CI nimmt Fehler an, vermeidet sie nicht und wirft sie nicht weg. Sie erhalten ganz einfach ein Tool, mit dem Sie frühzeitig Fehler machen können, anstatt später. Sie schreiben also zuvor getesteten Code nicht wirklich auf einen CI-Server. Obwohl Sie sich bemühen sollten, sauberen und nicht fehlerhaften Code festzuschreiben, verwenden Sie den CI-Server tatsächlich, um automatisch einen Integrations-Builder über Ihren Code auszuführen und zu beurteilen, ob alles richtig herausgekommen ist. Wenn ja, ordentlich! Wenn nicht, kein Problem - gute CI-Praktiken besagen, dass Ihre nächste Priorität nur darin bestehen sollte, das zu beheben, was kaputt gegangen ist. Worauf Sie bei einem guten CI-Server leicht hinweisen sollten.
Mit zunehmender Größe eines Teams wird die Integration des Codes aller natürlich schwieriger. Es sollte die Aufgabe eines zentralen CI-Servers sein, alle integrierten Teile zu testen und die Teammitglieder zu entlasten. Sie müssen also alle frühzeitig (und so sauber wie möglich) verpflichten und dann den Build-Status überwachen (normalerweise sind Benachrichtigungen vorgesehen). Und wieder, wenn etwas aufgrund des Commits eines Entwicklers kaputt geht, ist es sofort seine Verantwortung, dies zu beheben und diese automatisierten Builds sofort wieder in den OK-Status zu versetzen.
Sie sehen, meiner Meinung nach profitiert jedes einzelne Projekt von einer kontinuierlichen Integration. Die Sache ist, dass die Leute bis jetzt und aufgrund der unglaublichen Komplexität jedes einzelnen CI-Servers, den ich kenne, CI-Praktiken bei kleineren / einfacheren Projekten wirklich abgewehrt haben. Denn, komm schon, die Leute haben bessere Dinge zu tun, als Tage damit zu verbringen, eine hässliche, übermäßig komplexe, unterversorgte, aufgeblähte Software zu konfigurieren.
Ich hatte genau das gleiche Problem, und deshalb habe ich Cintient seit ungefähr einem Jahr in meiner Freizeit entwickelt. Meine Prämisse war es, die Installation, Konfiguration und Verwendung zu vereinfachen und die Qualitätsmetriken zu liefern, die bei allen anderen so gut wie fehlschlagen oder zu wenig liefern. Nach dieser langen Antwort kommt mein schamloser Plug, um auf den GitHub-Link für das Projekt hinzuweisen (der kostenlos und Open Source ist, natch). Es hat anscheinend auch einige schöne Screenshots. :-) https://github.com/matamouros/cintient
Hoffe ich habe dir geholfen.
(HINWEIS: Nach Bryan Oakleys Kommentar bearbeitet, weil ich mir mehr Zeit hätte nehmen sollen, um eine bessere Antwort zu finden. Ich denke auch, dass er Recht hatte.)