In meinem Fall (ein in-house entwickelt/Einbau/unterstützt CB-System), verpflichtet sich der VCS im Baum durch einen gegebenen CB Config gezielt automatisch eine CB Warteschlange Anfrage (mehrere Anfragen, die während der Ausführung einer CB eingehen, werden in eine zusammengefasst, die ausgeführt wird, sobald der aktuelle CB-Prozess abgeschlossen ist).
Jede CB-Instanz reagiert auf eine CB-Anforderung, indem sie die Build- und Testschritte ausführt (parallel zu einer "Wolke" verteilter Server, die von allen CB-Instanzen gemeinsam genutzt werden) und die Build- und Testergebnisse protokolliert und gelegentlich (nicht öfter als eine konfigurierte Frequenz) starten "schwere Tests" (die sehr lange laufen können und KEINE eingehenden CB-Anfragen blockieren) - schwere Tests werden komplett abgeschrieben, obwohl die Protokolle es sehr genau verdeutlichen gegen welche Build sie laufen).
"Sync to Head" (dieser "Kopf" wäre "Trunk" in anderen VCS ;-), für Abhängigkeiten, die nicht Teil des Baumes sind, der von einem CB erfasst wird, nicht produktionskritische oder experimentelle Builds) oder nur bei sehr expliziten Integrationsanforderungen (das ist das andere Extrem für "release branches" für Builds/Projekte, die produktionskritisch sind) oder mit intermediärer Toleranz.
Nicht die Spitze der Release-Engineering-Praxis, denke ich, aber in seiner Palette von Optionen funktioniert es gut für uns, für eine wirklich große Vielzahl von Projekten von sehr unterschiedlicher Kritikalität, Abhängigkeit-Schwere, & c ;-).
Bitte sehen: http://stackoverflow.com/questions/102902/what-is-a-good-ci-build -process – Shog9
@ Shog9: Die Frage, die Sie beziehen, bespricht CI auf einer abstrakteren Ebene (wage ich zu sagen * meta *?), während diese Frage nach spezifischen Implementierungsdetails fragt. Ich denke, sie unterscheiden sich genug, um diese offen zu halten. – Treb