チームを立ち上げたとき、私たちが担当しようとしていたシステムを最初に開発したベンダーから、リリースベースの戦略を継承しました。いくつかの開発された機能をリリースに含めるべきではないという顧客の要求があったときまで、それは機能していました (約 25 万行のコード、約 2500 ファイル、XP SDLC を使用したスクラム)。
次に、機能ベースのブランチを検討し始めました。これもしばらくの間機能しました - 回帰テスト プロセスに 2 週間以上かかることが判明するまで 2 か月ほどかかり、何がリリースされるかについての不確実性と相まって、大きな不便が生じました。
純粋な SC 戦略の最終的な「棺桶の釘」は、1. 安定したトランクと 2. プロダクションに ST、UAT、および回帰テスト済みのバイナリ (ソースだけでなく、CC を考えてください) を含める必要があると決定したときに起こりました。
これにより、機能ベースの SC 戦略とリリース ベースの SC 戦略を組み合わせた戦略を考案することになりました。
だから私たちはトランクを持っています。スプリントごとにスプリント ブランチを分岐させます (アジャイルではない人にとっては、スプリントは、複雑さに応じて可変出力を使用する時間制限付きの開発作業です)。スプリント ブランチから機能ブランチを作成し、そこで並行開発を開始します。機能が完成し、システムがテストされ、それらを展開する意図を受け取ると、それらはスプリント ブランチにマージされます。一部の機能は、複数のスプリントにまたがる場合があり、通常はより複雑なスプリントになります。スプリントが終わりに近づき、機能が完成したら... スプリント ブランチを「リグレッション」に「名前変更」し (これにより、CruiseControl が再構成なしでそれを選択できるようになります)、その後、cc-built でリグレッション/統合テストが開始されます。耳。それがすべて完了すると、生産に入ります。
つまり、機能ベースのブランチは、開発、システム テスト、および UAT 機能に使用されます。スプリント ブランチ (実際にはリリース ブランチ) は、オンデマンド機能と統合テスト機能を選択的にマージするために使用されます。
ここでコミュニティへの質問です。開発が多くのブランチで行われるという事実と、CruiseControl の再構成のオーバーヘッドが原因で、明らかに継続的インテグレーションの実行に問題があります。誰かが提案してアドバイスできますか?