构建后更新阻止的二进制文件

时间:2012-04-28 18:09:38

标签: teamcity

我想将二进制文件复制到舞台服务器作为构建的最后一步。以前我是为IIS支持的asp.net网站做的。没有问题,因为IIS不会阻止任何边界。现在我需要对可执行服务器应用程序(它执行一些后台任务)执行相同的操作,这至少会阻止其exe文件。所以我需要以某种方式关闭应用程序,更新二进制文件,然后再次运行应用程序。

使用TeamCity实现它的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

我看来你的登台服务器是一台Windows机器。如果是这种情况,我建议使用PsTools Suite(PsKill和PsExec)中的两个可执行文件来终止/启动您的进程。以下是我在TeamCity中设置所有内容的方法:

  1. Download PsTools Suite,并将zip文件的内容复制到构建服务器上的文件夹中。我将在我的例子中使用C:\ Program Files \ PsTools。

  2. 创建一个批处理文件,该文件终止可执行服务器应用程序,复制相应的二进制文件,然后再次启动应用程序。批处理文件看起来像这样:

    “C:\ Program Files \ PsTools \ PsKill”-accepteula \ computername -u username -p password name_of_process_to_kill.exe

    复制文件 - 我假设您使用命令行将二进制文件复制到ASP.Net登台站点。如果没有,我可以在以后提供更多细节。

    “C:\ Program Files \ PsTools \ PsExec”-accepteula \ computername -u username -p password -d“path_and_name_of_executable_on_remote_server”optional_commandline_args_here

  3. 向TeamCity构建配置添加新的命令行构建步骤,以执行步骤2中创建的批处理文件。

  4. 我希望这有帮助!

答案 1 :(得分:0)

以下是我如何解决它。我添加了命令行步骤以及以下自定义脚本:

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

最初它不起作用,因为TeamCity构建代理作为服务(没有UI)。然后我禁用了服务并启动了构建代理作为控制台(通过TeamCityFolder / builagent / bin / agent.bat)。它起作用了。