25

継続的インテグレーションの概念が私のチームに統合されました。

Devという名前の統合ブランチがあるとします。

そこから、特定の現在のプロジェクトごとに 1 つずつ、3 つのブランチが派生します。

  • プロジェクトA
  • プロジェクトB
  • プロジェクトC

まず、Teamcity は専用サーバーで構成され、その目標は次のとおりです。

Dev を含む各ブランチのバージョン管理されたソースから単体テストと統合テストをコンパイルして起動します

次に、もちろん、UAT を実行できるように、各プロジェクト ブランチ (A、B、および C) を複製された運用環境でテストする必要があります。

しかし、どの頻度で展開すればよいのでしょうか? ソースコードが変わるたびに?

それぞれをマージした後 (次の製品リリースの現実に対応)、または 3 つのプロジェクトを個別にマージした後、3 つのプロジェクトの混合を含む Dev のみを展開する必要がありますか?

Dev がデプロイされている場合、Dev で将来変更される可能性があることを考慮してはなりません。確かに、プロジェクト Dと呼ばれる新しいプロジェクトが開始される可能性がありますが、それは次のリリースの一部であってはなりません。そのため、Dev を統合 (UAT) に使用することは、デプロイヤーがプロジェクト D のコンテンツを非自発的に統合する可能性があり、環境が次のリリースの現実を明らかにしない可能性があるため、リスクがあります。

その他の解決策: Dev ではなく 3 つのプロジェクトを独立して使用しているため、3 つの複製された運用環境が並行して存在する必要がありますか?

はいの場合、統合環境の動作が頻繁に変更される可能性があるため、UAT は信頼できません...

UAT の継続的な展開の概念は、私には明確ではありません...

4

1 に答える 1

28

ああ少年。あなたは現実世界の CD 問題にぶつかっています。本当に良い質問です。

答えは、開発作業がさまざまなプロジェクトで非常に緊密に結合されていることに少し依存します。

私の理想的な状況では、多くの「努力」固有のテスト環境を用意することです。場合によっては、プロジェクトごとにテスト環境を検討できます。プロジェクト A のビルドが完了したら、B/C 用の最新の承認済み/実稼働バージョンがある環境 A にそれをプッシュし、そこで基本的な統合テストを実行できます。合格した場合、ビルドを統合テスト環境に昇格させます。そこでは、最新の適切な A が、同じリリースの最新の B & C に沿ってデプロイされます。統合テスト環境がテストに合格したら、その内容を A、B、および C の既知のバージョンを含むリリース セットとしてプロモートできます。そのリリース セットは、UAT、ステージング、または実稼働環境に展開されます。

基本的な考え方は、各プロジェクトにある程度の分離を与えて、他のプロジェクトが (一時的に) ひどく壊れている場合でも十分にテストできるようにし、できるだけ早く完全な統合テストを行うことです。また、実際に統合テストに合格したものはすべて一緒に宣伝されるようにしたいと考えています。一緒にテストされていないプロジェクト バージョンを選択してリリースすることは、私の好みではリスクが高すぎます。

これは、実際に私がかなり多く話すトピックです。よろしければ、これらのトピックに関して私が行ったいくつかのプレゼンテーションをリストアップします。

1)並列開発のための CI のスケーリング(Accurev の Chris Lucca と共同発表)

これは、分離と統合のバランスをとるための広範な戦略についてよく語っています。その多くは、サブプロジェクトが共通のコード ベースにマージされていることを前提としていますが、プリンシパルは、少し想像力を働かせるだけで、個別に構築および展開されたモジュールに適用できます。

2) Jenkins で uDeploy を使用する (登録が必要です)

これはより製品に焦点を当てていますが、複数のプロジェクトに統合テスト環境を使用し、リリース セット (「スナップショット」と呼びます) を作成し、それを促進するという考え方をほぼ正確に示しています。TeamCity との統合は非常に似ていますが、そこに保持されている戦略がより重要になる可能性があると思います

3) マルチコンポーネント パイプラインを視覚化するスライド:

http://www.slideshare.net/Urbancode/adapting-deployment-pipelines-for-complex-applications

于 2012-02-02T18:33:55.687 に答える