2009-03-05 16 views
6

これはすでに求められているが、私はこのような状況に固有の答えを見つけることができていない場合はごめんなさい:>のProd

当社のウェブについてアプリケーションには、dev、QA、およびproductionという3つのシステムがあります。今、第三者がコードを維持していますが、すぐにそれが私たちの手に入ります。私たちは、各段階ごとに別々のビルド環境を用意します。また、RADをコード開発に使用するため、実際にはテスト/サンドボックスという主要なステップがあります。

理想的には、DEVからチェックアウトして変更を加え、ローカルでテストし、DEVにチェックインするなど、ステージごとにリポジトリを分離することが理想的です。 DevのすべてがOKならば、QAをチェックします。

それぞれ別々のリポジトリを用意するか、これはdev、QA、prodの別のブランチを持つ 'branching'の下に置かなければなりません。理想的なルートが何であれ実装するための最良の手段を提供することができますか?

その他のご質問がある場合はお知らせください。

おかげ クリス

答えて

6

使用を混同してはなりません現在のリリースブランチ。リリース間でバグを修正した後、それらをトランクにマージします。

私たちはトランク上で開発しています。公開準備ができたら、QAブランチを作成します。私たちはそれをテストして修正し、それを押し出すと、現在のリリースブランチになります。

1

あなたがチェックアウトまたはデプロイプロセス中にエクスポートすることができる単一のリポジトリを持つ必要があります。

私たちも同様の設定をしています。開発者はローカルの作業コピーをチェックアウトし、開発環境で開発します。私たちは、あなたがそれを呼び出すときに舞台に立つのをやりがいする準備ができたら、その環境へのsvnのエクスポートを行います(多くの場合、頭のものですが、常に特定のリビジョンを追跡します)。

QAプロセス中、私たちは開発を続け、QAに展開します。

最後に、運用準備が整うと、適切なリビジョンをリポジトリから運用環境にエクスポートします。

素晴らしい作品です!

[編集:これまでの分岐です] - あなたが記述しているのはおそらく、リビジョンを追跡するようなものでしょう。しかし、分岐は異なる開発ラインを管理するための非常に重要な技術です。

我々は我々が作成放す:これは]必ずしも、(DEV、舞台、ライブ)各段階ごとに異なるブランチを持つ私たちは、次の手順に従ってください

分岐とマージ

1

これは、簡単に確認できるタスクを使用して単一の開発ストリームで作業している場合に有効です。しかし、それは開発の複数のストリームとタスクが引き出されたり遅れる可能性があることから、より困難になることが証明されます。その後、アプリケーション内にある種の時間依存性が必要になります。機能が構築されると、機能ブランチのようなものをトランクにマージして戻すこともできます。

3

チェックアウトスコット・コーワンのブログ記事:

http://sleepoverrated.com/archive/2007/12/buildknowledgepromotingyourbuild/

彼は異なる環境にコードを推進する上で素晴らしい記事を持っています。いくつかのビルドスクリプトを書くことが含まれますが、プロセスが改善されます。それはまた自動化された何かにすることができます。

+0

私の古い設定の問題は農場環境でした。私はteamcityを使用して、アーティファクトをダウンロードしてインストールするためのスクリプトを起動するのが好きです –

1

類似のスキーマがあります。 SVNには、3つのブランチ、trunkPREPROD、およびPRODがあります。新しい機能を試す準備ができたら、PREPRODブランチにマージされます(特定のリビジョン番号のみを使用し、特定のファイルのみ)。QAを通過するとコミットされ、PRODブランチにマージされます。変更がPRODブランチでコミットされると、すべての本番サーバーに自動的に展開されます。新機能をテストする場合を除いて、PREPRODPRODは等しいです。

+0

トランクはPRODを反映しますか? –

+0

いいえ、トランクはPREPRODにマージされていない機能を持つことができます – vartec

1

バグ修正、機能またはタスクごとに開発ブランチがあり、関連するプロジェクトに複数のサブブランチがある傾向があります。

最初は、1行のコード修正のために新しいブランチを作成していますが、トランクをブランチにマージして回帰テストを行い、最終的にトランクにマージすることができます。

これは、トランクにマージされたものがビルドを破壊しないことを理想的に意味します。つまり、コードが脆弱なビルドになるのを怖がっているわけではありません。

1つの問題で複数のブランチを使用して、さまざまなソリューションをテストしながら、SCMのメリットが得られることがよくあります。

また、特定のバージョンまたはリリースにタグを付けることで、既知の優れたコードに基づいて迅速に展開できます。

ウェブベースのシステムの多くは、ライブラリやベンダーコードなどの依存関係の特定のバージョンを指すsvn:externalsを使用しています。デプロイメントは、ストレートなチェックアウトやエクスポートではなく、外部から行われます。

関連する問題