TeamCityの新バージョンで、別のCI製品から移行し、TeamCityバージョン9.1.6のC++プロジェクトの作業ビルドを構成する方法を見つけようとしています。TeamCity C++ gradle buildはアーティファクト依存関係を削除します
私が抱えている問題は、エージェントがコンポーネントビルドの直前(またはその間)に依存関係ディレクトリを削除していることです。なぜビルドログのどこにこの問題が起こっているのかの記録が見つかりません。
、システム内の任意のコンポーネントのビルドレイアウトはそうのようになりますので、
<base-dir>
|
+---<to-be-built>
+---<dependency-1>
+---Include
+---Lib
+---<dependency-2>
+---Include
+---Lib
は...、checkoutDirはコンポーネントのあるものは何でも、すべての依存関係がピア・ディレクトリに発見されることが想定され、依存関係に基づいて名前が付けられ、フォルダ名にバージョン情報はありません。例えば
、「MyExe」のバージョン3.0.2は、「SomeLibA」と「SomeLibB」のバージョン2.1.0のバージョン1.1.0に依存する場合、ファイルシステムはそれほどのようになります。
MyExe_3.0.2
|
+---MyExe
+---SomeLibA
+---Include
+---Lib
+---SomeLibB
+---Include
+---Lib
したがって、このビルドレイアウトを作成するには、 "MyExe"のバージョン3.0.2のビルド設定で、 "MyExe_3.0.2/MyExe"のようなカスタムチェックアウトディレクトリが指定されています。
これまでのところ、とても良いです。依存関係は成果物依存として構成され、その宛先ディレクトリーは '../'として指定されます。これもまた簡単です。
私がビルドを開始すると、ビルド対象のコンポーネントが取得されているのを確認した後、依存関係が到着したことを確認してから、ビルドのために設定したgradleタスクが実行されます。すべての依存関係ディレクトリ(SomeLibAとSomeLibB)が抹消され、もちろんそのコンポーネントは依存ファイルのどれも見つけることができず、インクルードファイルとコンパイルは失敗します。
コンポーネントのチェックアウトディレクトリ内のすべてのファイルをクリーンにし、すべての依存関係上で 'アーティファクトをダウンロードする前にコピー先パスをクリーンアップ'を無効にしましたが、これは無効です。
この動作に関連する可能性がある2つのヒントしか見つかりませんでしたが、どちらの原因でこの問題が発生するのかわかりません。
最初は、「MyExe」の「バージョン管理設定」タブで、「このディレクトリはビルド前にTeamCityで消去される可能性があります」という小さな警告記号で、カスタムディレクトリを参照しています。しかし、ビルド実行中に消去されるディレクトリは、checkoutディレクトリではなく、checkoutディレクトリの親ディレクトリです。
私が見つけることができる唯一の他の候補は、私が設定したgradleタスクが、ビルドの実行時に指定された唯一のタスクではないということです。ビルドログで "gradlew.bat myGradleTask"を見るのではなく、 "gradlew.bat --init-script C:\ TeamCity \ BuildAgent \ plugins \ gradle-runner \ scripts \ init.gradle myGradleTask"を見ています。
しかし、私はそのinitスクリプトを見てきましたが、ディレクトリクリーンアップに関連するものは何も見ませんでした。
私は困惑しています。誰もが何が起こっているのか、それを回避する方法を知っているので、このビルドは正常に完了できますか?許容可能なソリューションは、上記のビルドレイアウトの要件を維持する必要があります。