2

これで、TeamCity(6.5)とMSBuildを使用して、妥当な初期の設定ができました。これまでのところ、複製する前に希望どおりに機能するまで、この方法で構築されるソリューションは1つだけです。

  • 2つのビルドによって呼び出される1つのソリューション–ビルドが壊れていないことを確認するためのチェックイン時のCIビルドと、テスト用のアーティファクトを作成するテストビルド。
  • アセンブリのバージョン番号は、ソリューション内のすべてのプロジェクトのリンクファイルである単一のVersionInfo.csファイル(これは良い考えですか?)から取得されます。この方法の詳細は次のとおりです: http: //www.codeproject.com/Articles/328977/The-Right-Way-to-Version-Your-Assemblies
  • 両方のビルドのビルドステップは、現在、ビルドランナーとしてMSBuildを使用して、ソリューションファイルのみを調べています。

次にやりたいこと:

  1. バージョン番号はMajor.Minor.Release.Build番号になります。したがって、最後の項目をTeamCityビルド番号に設定する必要があります
  2. テストビルドのみ:バージョン番号の名前で作成されたフォルダーを使用して別の場所にコピーされるアーティファクト

それで、最後に質問に..私はする必要がありますか

  1. ビルド番号を反映するようにVersionInfo.csAssemblyFileVersionを修正するために、ビルド前の手順で別のビルドプロジェクトを作成します
  2. 新しいビルドプロジェクトで、アーティファクトを別のディレクトリの新しいディレクトリにコピーするためのビルド後の手順を作成しますか?

私がこれに苦労しているのは、両方のビルドが同じソリューションファイルを使用しているため、CIビルドがこれらのアイテムを取得しない方法と、新しいビルドファイルを作成する必要があるかどうかを検討することです。その場合、既存のソリューションファイルをそのままにしますか?

あなたはおそらく私が少し混乱していると言うことができます...どうもありがとう。

4

1 に答える 1

3

バージョン番号を修正するためだけに、さらに別のビルド構成を作成する必要はありません。

TeamCityには、既存のCIビルド構成で使用できる組み込みのAssemblyInfoPatcher ビルド機能があります。ビルドが実行される前に、チェックアウトディレクトリにあるすべてのAssemblyInfo.csファイルに現在のビルドバージョン(そのビルド構成のTCで定義されている)を適用するため、アセンブリ情報のバージョン管理を自分で行う必要がなくなります。単一の共有VersionInfo.csファイルで行ったことは悪いことではなく、このコンテキストでは不要です(もちろん、会社、トラッドマーク、著作権などの他のAssemblyInfo情報を共有するために使用している場合を除きます)。

アーティファクトを保存するためのいくつかのオプション。

  • TeamCityデータディレクトリからビルドアーティファクトを取得できます。このディレクトリにコピーするアーティファクトは、各ビルド構成の一般設定ページで定義されています。詳細については、アーティファクトのビルドページを参照してください。

  • カスタムスクリプト(msbuild、nant、cmd行など)を実行するビルドステップを作成して、要件にコピーします。

  • 私が好む傾向があるもう1つのオプションは、アーティファクトをソース管理にプッシュして戻し、他のビルドで直接チェックアウトできるようにすることです。

(すべてのリンクはTeamCity 6.5.xのドキュメントへのリンクです)

実行していることを実現するために、2つのビルド構成は必要ありません。複数のビルドステップで使用できます。ソリューションの構築と成果物の収集を2つの別々の構成に分割することは実際には論理的ではないようです。

于 2012-06-20T19:40:43.463 に答える