0

ASP.NET MVC アプリケーションをビルドおよびデプロイするように TeamCity をセットアップしようとしています。

TeamCity 4.5 を使用している他のサーバーではセットアップが正常に実行されていますが、新しいサーバーは TeamCity 6 を実行しており、期待どおりに動作させるのに問題があります。

TeamCity はソース管理からファイルを取得し、プロジェクト (Visual Studio Solution 2008 を「ビルド」に設定) は必要なファイルを期待どおりにビルドして出力します。出力ファイルが Web サイト フォルダーにコピーされないため、アーティファクト パスに問題があるようです。

私のソリューションは、多数のプロジェクトで構成されています。この場合、"Web" プロジェクトが興味深いプロジェクトです。ビルド チェックアウト ディレクトリは C:\TeamCity\buildAgent\work\7da320cebf0ee541 で、「Web」プロジェクトは C:\TeamCity\buildAgent\work\7da320cebf0ee541\Web にあります。

次のアーティファクト パス (チェックアウト ディレクトリから Web サイトを含むフォルダーまでの相対パス) を使用してビルド構成をセットアップしました。

Web/bin=>../../../../inetpub/wwwroot/staging/bin
Web/Content=>../../../../inetpub/wwwroot/staging/Content
Web/Views=>../../../../inetpub/wwwroot/staging/Views
Web/Media=>../../../../inetpub/wwwroot/staging/Media
Web/*.aspx=>../../../../inetpub/wwwroot/staging
Web/*.asax=>../../../../inetpub/wwwroot/staging

(念のため、もっと ../ を試してみましたが、違いはありませんでした)。

これは、ログから取得した出力です

[19:35:29]: アーティファクトの公開 (1 秒) [19:35:29]: [アーティファクトの公開] 公開するパス: [Web/bin=>../../../../inetpub/wwwroot /staging/bin、Web/Content=>../../../../inetpub/wwwroot/staging/Content、Web/obj=>../../../../inetpub/wwwroot /staging/obj、Web/Views=>../../../../inetpub/wwwroot/staging/Views、Web/Media=>../../../../inetpub/wwwroot /staging/Media, Web/ .aspx=>../../../../inetpub/wwwroot/staging, Web/ .asax=>../../../../inetpub/wwwroot /staging, teamcity-info.xml] [19:35:30]: [アーティファクトの公開中] ファイル送信中 [19:35:32]: ビルド完了

TeamCity 4.5 を実行している他のサーバーの一部からのログは、異なる形式を使用しており、公開されているアーティファクトごとに行があります。これが関連しているのか、それともログ形式が異なるためだけなのかはわかりません。

すべてが機能しているように見えますが、ビルド後に Web サイト フォルダーにファイルが配置されていません。どんな助けでも大歓迎です:)

4

3 に答える 3

1

TC6 を使用しているため、コピー/移動を実行する VS.NET ソリューション ビルダーの後に 2 番目のビルド ステップを追加できるはずです。MSBuild はおそらくこれを行うための推奨されるスクリプト作成方法ですが、コピーするだけでよい場合は単純なコンソール ランナーを使用できます。スクリプト化されたアプローチを使用すると、展開ディレクトリの絶対パスを使用できるはずです。これは、相対パスほど脆弱であってはなりません。

于 2011-02-01T19:50:30.760 に答える
1

6.0 以降、TeamCity はサーバーの成果物ディレクトリの外部に成果物を公開することを許可していません (セキュリティ上の理由から)。これはあなたの場合だと思います。

サーバー ログ (TeamCity/logs/teamcity-server.log) には、「ビルド アーティファクト ディレクトリ外でアーティファクトを公開しようとしています」という関連する警告が表示されるはずです。

ファイルを特定の場所に公開したくない場合は、ファイルを FTP などで目的の場所に送信する別のビルド ステップを作成する必要があります。

http://youtrack.jetbrains.net/issue/TW-1558に投票することもできます。

于 2011-02-02T07:20:38.040 に答える
1

Albacorebuild を見てみましょう。ビルド プロセスの制御、テストの実行、ZIP および NuGet パッケージの作成に使用しています。詳細と例はこちら: http://daniel.wertheim.se/2011/07/14/continuous-integration-using-teamcity-rake-albacore-github-and-nunit-for-net-%E2%80%93 -part-3/

于 2011-07-28T06:26:04.473 に答える