同じディレクトリで2つのビルドをチェックアウトすることは可能ですか?これを行うにはどうすればよいですか?
現在、2つの異なるビルドが2つの異なるディレクトリにチェックアウトしています。
これは、チェックアウト ディレクトリの場所を制御することで実現できます。
最初に、チェックアウト ディレクトリを両方のビルドで認識できるものに定義する必要があります。ビルド構成で、[バージョン管理設定] -> [チェックアウト設定] を参照します。チェックアウト ディレクトリの設定を に変更しCustom Path
ます。次に、ソースをチェックアウトするディレクトリを指定するよう求められます。TeamCity に書き込み権限がある限り、これは好きな場所に置くことができます**。
次に、チェックアウト ディレクトリのルートに関連するフォルダーを対象とするように、各プロジェクトのチェックアウト ルール (バージョン管理設定でも) を変更する必要があります。これを行うには、ルールを に設定し+:%some.repo.path%=>/%some.sub.folder%
ます。そこに必要なサブフォルダーを指定できます。チェックアウト ディレクトリ ルート ( =>/
) にすべてをチェックアウトするだけです。
両方のプロジェクトが同じチェックアウト ディレクトリを参照している場合、この設定の組み合わせにより、必要な制御と柔軟性が得られます。
** チェックアウト ディレクトリでは、パラメータ化された値を使用します%teamcity.agent.work.dir%\%system.teamcity.projectName%\%branch%
。最初の 2 つのパラメーターは TeamCity システム パラメーターであり、最後のパラメーターは私たちが定義します。私たちのシステムでは、これは G:\BuildAgent\work\$PROJECT\$BRANCH に解決され、すべてが整理され、予測可能になります。
これらのビルド構成では VCS 設定 (VCS ルートとチェックアウト ルールのセット) が異なるようです。それが、TeamCity が異なるチェックアウト ディレクトリを使用する理由です。このような状況では、サーバーに同じディレクトリを強制的に使用させることはお勧めしません。
A と B の 2 つの構成があり、それらを同じディレクトリにビルドするように TeamCity を構成したが、A と B の VCS 設定が異なるとします。次に、チェックアウト中に何をすべきですか?
たとえば、ビルド A がエージェントで終了し、ビルド B が同じエージェントで開始されると、TeamCity はチェックアウト ディレクトリの下のすべてのソースを消去して、再度フェッチする必要があります。ビルド A の後にビルド B が開始された場合も同じことが起こります。その結果、これらのクリーンなチェックアウトにより速度が低下します。
自動生成されたチェックアウト ディレクトリにより、サーバーはチェックアウト パフォーマンスとエージェントのディスク使用を最適化できます。カスタム チェックアウト ディレクトリを使用するアプローチは最適ではなく、スケーラブルではありません。可能であれば避けてください。
参照: http://confluence.jetbrains.com/display/TCD8/Build+Checkout+Directory http://confluence.jetbrains.com/display/TCD8/Clean+Checkout