如何使 Ant 任务"SSHExec"运行命令并在完成之前退出?



我有一个ant构建脚本,它连接到远程服务器并使用ssheexec启动本地构建。这个构建大约需要1分钟,当它完成时,它会给我发一封电子邮件,但是我的任务是:

<sshexec
   host="${deploy.host}"
   username="${deploy.username}"
   trust="true"
   keyfile="${user.home}/.ssh/id_rsa"
   command="~/updateGit.sh"/>

将等待直到脚本完成。我尝试通过&这样(我假设我必须在build.xml中转义它):

<sshexec
   host="${deploy.host}"
   username="${deploy.username}"
   trust="true"
   keyfile="${user.home}/.ssh/id_rsa"
   command="~/updateGit.sh &amp;"/>

但这似乎没有什么不同。如果这些额外的细节对任何人有所帮助,脚本生成大量输出,并且缓慢的互联网连接可能导致脚本花费更长的时间(因为它的输出是通过管道返回的,使用这种方法的假设是我只关心完成后的输出,所以如果我将其打包到电子邮件中,我可以在构建开始时监视我的收件箱,基本上这是一个穷人的持续集成)

使用来自此回答(和nohup命令)的信息,我更新了我的任务如下:

<sshexec
  host="${deploy.host}"
  username="${deploy.username}"
  trust="true"
  keyfile="${user.home}/.ssh/id_rsa"
  command="nohup ~/updateGit.sh &gt; /dev/null 2&gt; error.log &lt; /dev/null &amp;"/>

相关内容

  • 没有找到相关文章

最新更新