4

私は、開発/テスト/本番環境用のサブバージョン システムを構築する任務を負っていますが、同様の環境や提案に関する経験があるかどうか疑問に思っていました。

サードパーティ製品のスクリプトと複雑な構成ファイルを組み合わせた多数のシステムを構築および構成します。このため、サード パーティのシステム コードを制御できないため、構成ファイルとパスのレイアウトを再構築することはできません (つまり、システムが特定の場所に構成ファイルを配置する必要がある場合、そこに配置する必要があります)。

私たちは開発/テスト/本番の方法論を使用していますが、それよりも少し複雑です。各ステージには完全な物理環境があります。このため、各ステージは、その環境で機能するように変更する必要があります。すべての開発は開発サーバーで行い、テスト サーバーでテストしてから、運用サーバーを用意する必要があります。

このセットアップでは、プロジェクトのコピーを自分のワークステーションにチェックアウトして変更を加え、テストし、コミットして戻すことはできません。このようなものは、dev/test/prod サーバーでのみ機能します (つまり、特定のホスト名と IP 範囲に関連付けられています)。

したがって、私が見ているように、2つのオプションがあります。

オプション1

通常のトランク/ブランチ/タグ構造を行います。次に、開発/テスト/本番環境に固有のすべての変更を行うビルドの一部としてスクリプトを作成します。

たとえば、いつものようにすべてのコードをトランクにコミットし、満足したらリリース タグにコピーします。次に、テスト環境で latest タグをチェックアウトします。これには「セットアップ」スクリプトが含まれます。

次に、スクリプトを手動で (または SVN フックを介して) 実行すると、テスト サーバー上にいることが検出され、それに応じて変更が行われます。

この方法の問題は、svn diff などで、変更されたファイルへの変更が表示されることです。利点は、(かなり) シンプルであることです。

オプション 2

test/prod ブランチとトランクを開発として作成します。

project
  trunk
  branches
    test
    prod
 tags
    v1.0
    v1.1

開発サーバーが を指しているという考えtrunkです。変更に満足したら、新しいタグを作成します。次に、それを にマージしbranches/testます。これには、テスト サーバーで動作させるために必要な変更が既に含まれています。テストが完了したら、prod に対して同じことを行います。

私が見る限り、このアプローチの利点は、派手なフック スクリプトが必要ないことです。また、dev/test と dev/prod の間に、SVN がマージによってより適切に処理できるはずの、より複雑な違いを持たせることができます。

いくつかの入力、提案、経験などを探しているだけです。私たちは Subversion に縛られており、残念ながら追加のツールは使用できません。

ありがとうございます(長々とすみません)!

4

2 に答える 2

0

オプション 2 は、優れたアーキテクチャのようです。同様に探して熟読し、他の開発者とも話し合っています

于 2011-11-18T13:59:00.450 に答える
0

正直なところ、どちらのオプションも完全に実行可能だと思います。

ただし、私はあなたの最初の選択を少し好みます。理由は、特定のブランチ間の「既知の違い」を取得し始めると、「これはそこにあるはずのテストと製品の違いですか?」という問題を解決するために頭脳を使い始める必要があるからです。

オプション 1 を使用すると、常に、間違いなく、同じブランチ、同じコードから作業およびビルドを行うため、このドリフトは発生しません。誰もが変更を加えるたびに、マージする前に、特定の環境に影響を与えるかどうかをすぐに (必要に応じて) 確認できます。

したがって、基本的には物事を単純に保つための議論です。顧客に応じてソフトウェアをブランド化する場合も、同じ議論です。どちらの方法も実行可能ですが、オプション 1 に傾いています。

于 2010-07-15T07:14:10.103 に答える