2012-04-28 21 views
0

我想將二進制文件複製到階段服務器作爲構建的最後一步。以前,我正在爲由IIS支持的asp.net網站做這件事。沒有任何問題,因爲IIS不會阻止任何邊界。現在我需要爲可執行服務器應用程序(它執行一些後臺任務)執行相同的操作,它至少會阻止其exe文件。所以我需要以某種方式關閉應用程序,更新二進制文件,然後再次運行應用程序。生成後更新阻止的二進制碼

使用TeamCity實現它的最佳方式是什麼?

回答

0

這是我如何解決它。我添加命令行步驟與以下自定義腳本:

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

最初表現爲TeamCity的生成代理工作作爲服務(不具有UI)沒有奏效。然後我禁用了服務,並開始構建代理作爲控制檯(由TeamCityFolder/builagent/bin/agent.bat)。它的工作。

1

我好像你的登臺服務器是一臺Windows機器。如果是這樣的話,我建議使用PsTools Suite(PsKill和PsExec)中的兩個可執行文件來殺死/啓動你的進程。這是我會怎麼在TeamCity的設置好一切:

  1. Download的PsTools套件,以及ZIP文件的內容複製到文件夾中生成服務器上。我將在我的例子中使用C:\ Program Files \ PsTools。

  2. 創建一個批處理文件,該文件殺死可執行服務器應用程序,複製相應的二進制文件並再次啓動應用程序。該批處理文件將是這個樣子:

    「C:\ Program Files文件\ PsTools \ PsKill」 -accepteula \計算機名-u用戶名-p密碼name_of_process_to_kill.exe

    複製文件 - 我假設你複製二進制文件到您的ASP.Net暫存站點使用命令行。如果沒有,我可以稍後提供更多細節。

    「C:\ Program Files文件\ PsTools \ PSEXEC」 -accepteula \計算機名-u用戶名-p密碼 - d 「path_and_name_of_executable_on_remote_server」 optional_commandline_args_here

  3. 添加一個新的命令行構建步驟,您的TeamCity構建配置執行在步驟#2中創建的批處理文件。

我希望這有助於!