【发布时间】:2018-11-07 16:33:51
【问题描述】:
我正在开发一个与企业部署平台集成的自定义 TeamCity 插件。它应该在构建结束时通过执行命令行命令将二进制文件部署到某个部署平台。目前有一个类扩展了服务器端的 BuildFeature 类来设置要部署的工件的详细信息。在代理端有一个扩展 AgentLifeCycleAdapter 类的类,它覆盖 beforeBuildFinish() 方法并执行长时间运行的命令行进程。我正在使用 SimpleCommandLineProcessRunner 类来执行外部命令行进程:
final ExecResult result = SimpleCommandLineProcessRunner.runCommand(commandLine, null, new SimpleCommandLineProcessRunner.RunCommandEventsAdapter());
进程在两分钟后停止,看起来像是超时了:
[18:13:50]作为 atom_builder 运行 [18:13:50]执行 C:\TeamCity\buildAgent\work\db4107aa7e390a67\adeploy\adeploy.exe 神器版本推送 C:\TeamCity\buildAgent\work\db4107aa7e390a67\agent\atom-agent-artifact-version.xml [18:13:50]在 C:\TeamCity\buildAgent\work\db4107aa7e390a67\agent 运行 [18:15:22]2018-11-07 18:13:51 [信息] ["ArtifactPushService:PushArtifactAsync"] 使用参数调用方法 '"adeploy.exe" [18:15:22]退出代码:-1
当构建配置具有自定义构建功能时,在构建过程中执行长时间运行的进程的正确方法是什么?
【问题讨论】:
-
默认情况下对执行时间没有任何限制。您通常使用
ping localhost -n 3600之类的命令构建命令行步骤,它将在 1 小时内成功运行。我猜你的代码中有一些东西。 -
@daggett 你是对的,这与我的代码有关。我找到了原因。
标签: teamcity