我想将二进制文件复制到舞台服务器作为构建的最后一步。以前我是为IIS支持的asp.net网站做的。没有问题,因为IIS不会阻止任何边界。现在我需要对可执行服务器应用程序(它执行一些后台任务)执行相同的操作,这至少会阻止其exe文件。所以我需要以某种方式关闭应用程序,更新二进制文件,然后再次运行应用程序。
使用TeamCity实现它的最佳方法是什么?
答案 0 :(得分:1)
我看来你的登台服务器是一台Windows机器。如果是这种情况,我建议使用PsTools Suite(PsKill和PsExec)中的两个可执行文件来终止/启动您的进程。以下是我在TeamCity中设置所有内容的方法:
Download PsTools Suite,并将zip文件的内容复制到构建服务器上的文件夹中。我将在我的例子中使用C:\ Program Files \ PsTools。
创建一个批处理文件,该文件终止可执行服务器应用程序,复制相应的二进制文件,然后再次启动应用程序。批处理文件看起来像这样:
“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
向TeamCity构建配置添加新的命令行构建步骤,以执行步骤2中创建的批处理文件。
我希望这有帮助!
答案 1 :(得分:0)
以下是我如何解决它。我添加了命令行步骤以及以下自定义脚本:
taskkill /IM MyApplicationProcessName /F
xcopy RelativePathToBuildBinaires PathWhereToDeployBinaries /s /e /y
start PathToMyApplicationExeInDeployFolder
最初它不起作用,因为TeamCity构建代理作为服务(没有UI)。然后我禁用了服务并启动了构建代理作为控制台(通过TeamCityFolder / builagent / bin / agent.bat)。它起作用了。