0

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

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

4

2 回答 2

1

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

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

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

    "C:\Program Files\PsTools\PsKill" -accepteula \computername -u 用户名 -p 密码 name_of_process_to_kill.exe

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

    "C:\Program Files\PsTools\PsExec" -accepteula \computername -u 用户名 -p 密码 -d "path_and_name_of_executable_on_remote_server" optional_commandline_args_here

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

我希望这有帮助!

于 2012-05-02T17:42:01.467 回答
0

这是我解决它的方法。我使用以下自定义脚本添加了命令行步骤:

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

最初它不能作为 TeamCity 构建代理作为服务工作(没有 UI)。然后我禁用了服务并开始构建代理作为控制台(通过 TeamCityFolder/builagent/bin/agent.bat)。它奏效了。

于 2012-05-05T08:25:58.460 回答