web-dev-qa-db-ja.com

複数の開発ストーリーに影響を与えるパッチをリリースするためのベストプラクティス

私のチームは、かんばんスタイルのアプローチを使用して開発を行っています。このアプローチでは、機能とバグ修正のストーリーが、準備ができたときに本番環境にフィルターされます。現在、VCSとしてSVNを使用しており、各ストーリーの開発に機能分岐アプローチを採用しています。ワークフローの非常に単純化されたバージョンは次のようになります。

  1. ブランチ、ストーリーの展開
  2. ブランチからのストーリーのユーザー受け入れデモ
  3. トランクへの再統合、TestにリリースされたパッケージのTeamCityビルド
  4. すべてが順調であれば本番環境に移行

ただし、最近発生した問題の1つは、同じアプリケーションの多数のフィーチャーストーリーが同時に実行されている場合、それらのストーリーの1つにバグがあると、問題が発生する可能性があることです。つまり、ストーリー1が再統合されてバグがあったが、ストーリー2と3はそのバグが発見される前に再統合されたとします。現在、そのバグを含む3つのリリースがあります。つまり、2つのことのいずれかを実行することになりますが、どちらも優れていません。

  1. ストーリー3に従う新しいパッチリリースを作成します。つまり、ストーリー1、2、3+パッチを1つとして展開する必要があるため大規模な本番展開を行います。
  2. ストーリー1で導入されたバグのポイントまでトランクをロールバックし、バグを修正してから、ストーリー2と3を再統合して再リリースします。これは多くの作業であり、手動エラーが発生する可能性があります。

だから私の主な質問は次のようになります:

  • このシナリオを回避するために、再統合の前にブランチでシステムテストを実施する方が最適ですか?真のトランクコードでテストが行​​われないリスクはどうですか?
  • または、SVNの使用によって試行が制限されている、より新しいDVCSの使用によって与えられる他の可能性はありますか?
4
Ben

リリーストランクに移動する前に、QA「トランク」にリリースできます。これにより、より多くのテストを取得でき、優れた統合ビルドをリリースに昇格させることができます。バグを見つけた場合、問題が発生します。バグを修正して統合するか、リリーストランクに渡されたブランチを選択して、バグのある機能をスキップするかを決定する必要があります。

これは、バグのあるブランチが多数統合されている場合(つまり、リリースに進まない一部の機能がQAにマージされるため)、QAトランクがリリースとゆっくり同期しなくなる可能性があることを意味します。これを解決するには、常にバグを修正してから、次のサイクルでリリースにプロモートされるQAへの更新をマージするか、失敗してその一部にならない場合は、機能ブランチからのすべての変更をQAから元に戻します。すぐに解決します。

ブランチでもテストする必要がありますが、他の機能との統合が不十分なために発生したバグが必ずしも表示されるとは限りません。次の段階、つまりQAトランクに昇格するのに十分な能力があることを示す必要があります。

もちろん、既知の問題としての影響を説明するメモを付けてバグをリリースすることもできます。エンドユーザーが見つけた、デプロイされた製品のバグがすでにあることは間違いありません。ライブ環境で見つかったバグと同じ方法で、新しいバグに対処できます。

2
gbjbaanb