私は5チーム、合計約40人の開発者からなる開発グループの一員です。私たちは3週間のスプリントでスクラム方法論に従っています。継続的な統合セットアップ(Jenkins)があり、ビルドパイプラインには数時間かかります(広範な自動テストのため)。基本的に、開発プロセスはうまく機能します。
ただし、新しいスプリントを開始してから数日後、ビルドが不安定になり、スプリント終了の「コミットが停止する」まで揺れたままになることがあります。これの悪影響は、パイプラインのはるか下のビルドステップ、特にUI / Webtestsが数日間実行されないことです(「グリーン」ビルドでのみトリガーされるため)。その結果、新しく導入されたバグは、スプリントの非常に遅い段階でのみ検出されることがよくあります。
- 各コミットは、テストの基本セットに対して検証されます。確認されると、コードレビュー後に変更がマスターにプッシュされます(Gerrit)
- 基本的な単体テストは30分ごとに実行され、期間は10分未満です
- 統合テストは2時間ごと、1時間ごとに実行されます
- UI / Webtestsは、成功した統合テストで数時間実行されます
スプリント中のビルドの安定性の責任者(スプリントごとに責任が渡される)によっては、ビルドを安定させるための中間的なアドホックな「コミット停止」が存在する場合があります。
だから、私たちが欲しい:
- 開発チームは、スプリント中に変更を開発してコミットします
- 後続のビルド結果にはほとんど意味がないため、ビルドステップが失敗した場合に放棄するビルドプロセス
- 開発者にタイムリーに質の高いフィードバックを提供するビルドプロセス
(2)を考えると、ポイント(1)と(3)は互いに矛盾しているように見えます。誰もこれに対処する良い方法を持っていますか?
(現在、ポイント(2)を緩めており、失敗したビルドステップでもビルドの継続を許可しています。それが品質にどのように影響するかについて、まだフィードバックがありません。)
ありがとう、サイモン
several hours
それが本当の問題だと思います。組み合わせたソリューションが大きすぎて広すぎることを意味します。ソリューションをコンポーネント化して、パッケージとして小さなコードチャンクを用意する必要があります(すべてのプラットフォームのすべての主要言語で何らかの形で利用可能)。したがって、変更はコンポーネントのみに反映され、はるかに高速に検出されます。フルビルドでは、基本的に、既に結合されたコンポーネントがまとめられ、より高速になります。その後、適切なコンポーネントが解決されたことを確認するために、おそらくいくつかのテストのみを実行します。