2011-07-15 20 views
7

現在、私たちはリリース管理にSubversionを使用しており、すべてのリリース(QAと運用サーバーの両方)にタグを付けています。しかし、最新のリリースを反映した単一のリリースディレクトリを作成したいと考えています。このようにして、TeamCityは常に連続したビルドのために同じフォルダから引き出すことができます。また、誰かが生産に素早くバグ修正をしなければならない場合、間違ってそれを間違ったブランチにすることはありません。TeamCityを使用したSubversionリリース管理

たとえば、「リリース」フォルダが追加された現在の構造があります。毎回タグ付きブランチを「リリース」するための簡単な方法がありますか、あるいは最新のリリースのバージョンへのリンクである「リリース」さえありますか?

Our subversion folder structure

明確化

は、ここに私たちのビルド/リリースプロセスが現在どのように機能するかの例です:

  • を今日、私は正常にチームシティーの後にQAに弊社のWebアプリのバージョンをリリースそれを構築する。そうすると、私はブランチ/タグを付けます。
  • 明日以降、devsはトランクでアップデートを続けます。これらはQAの次のリリースまでQAにプッシュされません。
  • 水曜日、私たちのQAチームはバグを発見したことをお知らせします。私たちは、QAブランチでバグ修正を行い、その変更をトランクにマージし、更新されたQAブランチをQAにプッシュバックします。問題#1:QAのブランチに入ってからTeamCityが働いていません
  • 金曜日にQAが本番用のリリースを承認したので、公開し、ブランチ/タグ
  • 月曜日、クライアント生産にわずかな変更しか必要としない問題があるコール。リリースブランチを変更してトランクにマージします。問題#2:TeamCityを手助けすることなくTeamCityを変更しています。
+0

+1これは素晴らしい質問に変わりました。私たちのシステムがリストされている問題に対処しているかどうかわからないので、私たちは9月に説明された全く同じ位置になるでしょう –

答えて

4

私はこれに対して少し異なるアプローチをとっています。ソース管理の管理は、主にソースを管理し、それを追跡する手段またはそれを扱う手段として扱うことは、人生を少し難しくする可能性があります。これは本当にあなたの継続的な統合環境の目的であり、SVNがやるよりはるかに優れた仕事です。

私は、SVNから引き出すためにパスとリビジョン番号の両方を識別する方法としてTeamCityを使用します。ビルドの実行時にこれを定義するのは簡単です。プロダクションのリリースは常に注意して実行されます(つまり、パスとリビジョンの両方を慎重にチェックしてください)。絶対最悪のケースでは、それを台無しにすると、変更されたパラメータでビルドをいつでも再実行することができます。

あなたは本当に "リリース"フォルダに直接コードを変更したくないのです。これは、主流の開発や、以前のリビジョンを調整しなければならない場合のブランチのためのものです。それは、SVNを中核的な強みではないことをするために提出に打ち勝つことの一種です!その前に、The 10 commandments of good source control managementのヒントのいくつかが役立つかもしれません。

+0

TeamCityをどのように使用するかについては少し不明です。私たちのWeb製品は〜10個のEXEをサポートしています。それぞれのEXEはTeamCityによって構築され、チェックインごとにチェックされています。しかし、分岐/タグ付けを開始したら、ブランチ/タグの名前が常に同じでない限り、これを処理するためにTeamCityを設定するにはどうすればよいでしょうか? 「リリース」フォルダの変更に関するコメントについては、私の現在のビルドプロセスについてのオリジナルの質問の「解説」を参照してください。 あなたの洞察に感謝します! –

+1

コードの種類や数(つまり10個のEXE)と目的(QAや制作)を無視して、TeamCityがSVNの別のパスからコードを引き出す機能について話しています。そのパスは、通常、上記のシナリオではタグまたはブランチになるので、「同じVCSルートの下の別のパスからどのように引き出すことができますか」という質問になります。チェックアウトパスをパラメトリックにする方法を説明する「設定パラメータの使用例」を参照してください。http://troy.hn/q3OQLu –

+0

好ましい方法は、実際にはSVNへの変更であり、単一のタグが常に最新リリース。このように、リリースの変更はTeamCityによって自動的にチェックされます(各リリースのTeamCityを変更する必要はありません)。私はこれをどうやって行うのか分かりません。 –

0

ビルドが完了した後、ファイルまたはフォルダの内容をリリースフォルダにコピーできるように簡単にスクリプトを作成できます。これを行う前に、リリースフォルダの内容を削除することもできます。だから、svnのブランチやタグはコピー操作なので、簡単にこれを行うことができます。

0

プロジェクトごとに、最新バージョン(通常はバイナリのみ)を含むLatestフォルダがあります。

これは継続的な統合に非常に役立ちますが、カスタムMSBuildスクリプトを使用してこれを達成する必要があります。たとえば、コンテンツのSvnの削除、最新のフォルダへのSvnのコピーがあります。

+0

Hmmm ...私たちが探しているのは最新のリリースだけです。個別にタグ付けされたリリースを変更するのではなく、バグを修正してリリースしてください。 –

+0

@Jessはあなたの質問を誤解しているようです。どのくらいの頻度であなたのリリースを作るのですか?毎日/毎週/手動で?また、あなたのリリースフォルダには何がありますか - トランクのコピー? –

+0

私たちはまだリリースを使用していません...私はいつもリリースをブランチする場所に単一のフォルダを作成したいと考えていました。そうすれば、TeamCityは常にそのフォルダを構築し、開発者が迅速な生産バグ修正を行う必要がある場合、そのフォルダ内でその作業を行うことができます。 –

0

svn:externalプロパティを使用すると、リリースと呼ばれるフォルダに別のタグを参照させることができます。 svn:externalを参照してください。

svn propset svn:externals 'release http://my_repo/tags/latest_tag' . 

新しいタグリリースが作成されるたびに、最新のタグを指すようにプロパティ値を更新する必要があります。

+0

TeamCityのビルド設定にそれを統合しましたか?私はこれがどのように正確に動作すべきかわかりません。私は自分で構築するためにverisonをマークしなければならないと思います。 – powerMicha

+0

私はTeamCityでそれを使用していませんが、私はHudsonで使用しました。私の質問は、静的に命名された場所をSubversionにリンクして、リポジトリ内の実際の変更するバージョンにリンクする方法に関するものでした。 – bstick12

+0

よろしいですか。これはビルドの後に 'svn'文を自動的に実行すると真です。これはTeamCityでも行うことができます。私は別のビルド構成を追加して、 'release'を指摘すると問題を解決するのに役立つはずだと思います – powerMicha

関連する問題