私たちの非常に大規模なチームでは、メイン ブランチでゲートを行い、開発/機能ブランチ (それらの多く) で CI も行います。
Gated はブランチに対してより多くの保護を提供しますが、非常に大規模なチームと大規模なコード ベースを使用すると、開発チーム全体がそのブランチで変更を行っている場合にキューをバックアップできます。
CI は、開発者をもう少し信頼して保護を提供し、問題がすぐに見つかることも知っています。これはもう少し楽観的で、開発ブランチに適した、チームがより速く動くことを可能にします。
どちらの場合も、開発者は単体テストを実行し、変更中のコードをテストします。CI (チームに影響を与える) と Gated (キューで時間を消費する) はテストに取って代わるべきではありません.
チーム全体は、サイクルの大部分で CI を使用する機能/開発ブランチにいて、エンドゲームの安定化の間はより多くの人々がいるより高いブランチにいます。
大規模なチームでは、ビルド時間が自明ではなく、完全なテスト スイートも自明ではない場合、問題をより迅速に見つけるために、CI ビルドとローリング テストを並行して実行する必要もあります。そのシナリオでは、人々がチェックインし、CI がチェックインの最後のバッチを取得してビルドを実行し、ビルドがドロップされると、別のマシンがテスト スイートを取得して実行します。