2012-04-28 13 views
0

ビルドの最後のステップとしてバイナリをステージングサーバーにコピーします。以前はIISで動くasp.net Webサイトでこれをやっていました。 IISは境界をブロックしないため、問題はありませんでした。今、私は実行可能なサーバーアプリケーション(それはいくつかのバックグラウンドタスクを実行する)は、少なくともそのexeファイルをブロックするための同じを行う必要があります。だから私は何とかアプリケーションを閉じ、バイナリを更新してからアプリケーションを再実行する必要があります。ビルド後にブロックされたバイナリを更新します。

TeamCityを使用して達成する最良の方法は何ですか?

答えて

0

ここで私はそれをどのように解決したのですか。

taskkill /IM MyApplicationProcessName /F 
xcopy RelativePathToBuildBinaires PathWhereToDeployBinaries /s /e /y 
start PathToMyApplicationExeInDeployFolder 

チームシティーのビルドエージェントは、(UIを持っていない)サービスとして働いていたとして、最初はそれが動作しませんでした:私は、カスタムスクリプトを次のようにコマンドラインステップを追加しました。その後、サービスを無効にして、コンソールとしてTeamCityFolder/builagent/bin/agent.batによるエージェントのビルドを開始しました。そしてそれは働いた。

1

ステージングサーバーがWindowsマシンであるようです。その場合は、PsTools Suite(PsKillとPsExec)の2つの実行ファイルを使用してプロセスを終了/開始することをお勧めします。

  1. Download PsToolsのスイート、およびビルドサーバー上のフォルダにzipファイルの内容をコピーします。ここでは、私はチームシティーですべてを設定する手順は次のとおりです。私は私の例ではC:\ Program Files \ PsToolsを使っています。

  2. 実行可能サーバーアプリケーションを強制終了し、適切なバイナリをコピーしてアプリケーションを再起動するバッチファイルを作成します。

    : - 私はあなたがコピーしたと仮定しています "C:\プログラムファイル\ PsToolsの\ PsKill"

    コピーファイルname_of_process_to_kill.exe -accepteula \コンピュータ-uユーザ名-pパスワードバッチファイルには、次のようになりますコマンドラインを使用してASP.Netステージングサイトにバイナリを送信します。そうでない場合は、後ほど詳しく説明します。

    "C:\プログラムファイル\ PsToolsのPsExecは\" -accepteula \コンピュータ名-uユーザ名-pパスワード-d "path_and_name_of_executable_on_remote_server"

  3. は、あなたのチームシティーのビルド構成に新しいコマンドラインビルドステップを追加optional_commandline_args_hereその実行ステップ#2で作成したバッチファイル。

私はこれが役立つことを願っています!

関連する問題