2012-11-27 55 views
3

我正在寻找一种方法来暂停詹金斯或让Jenkins在开始另一个批处理过程之前从批处理文件中完成任务。基本上我想要的是类似的运行:詹金斯一次运行多个批处理文件

start /wait batchfile.bat 

但是当我运行这个詹金斯只是挂起,过程从未实际完成。当我运行这样的事情:

run %startpath%\firstbatch.bat 

run %startpath%\secondbatch.bat 

詹金斯在不同线程中运行这两个批处理文件,这对我造成了很大的问题。我需要完成批处理过程,因为他们做饭和复制资产。被触发的最后一批将压缩资源并在他们的路上发送它们,但是如果资产没有被复制,则压缩文件将在没有目录中的所有文件的情况下启动。我能想到的唯一方法就是让每个批处理都在不同的版本中,并为Jenkins增加一个安静的时间段,但这只是猜测批处理脚本实际运行的时间。提前致谢。

回答

1

尝试使用“call batchfile.bat”应该阻塞,直到批处理文件运行完毕。

+0

这工作。我知道我试过这个,因为我的批处理文件必须“调用”其他批处理来运行并发,但由于某种原因,我会得到一个无效的目录错误,也许是因为它不喜欢我的环境变量。现在它正在工作,甚至输出到控制台就像它应该。谢谢你的答案。我把头发拉出来,我知道它必须是我忽略的简单东西。 – SuperDave

0

如果您希望它们按顺序运行,您应该为每个批处理文件创建单独的构建作业,但不需要猜测它们将运行多长时间。在运行firstbatch.bat的作业配置中,在Post Build Actions部分中选择“Build other projects”,并指定运行secondbatch.bat的作业。直到第一份工作完成后才能开始这项工作。

+1

我也试图这样做,也许我的退出代码有点棘手,因为詹金斯只会运行该批处理文件,然后退出:处理泄漏的文件描述符。请参阅http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build以获取更多信息 完成:成功然后立即开始下一个构建步骤,但我知道该批次尚未完成,因为我可以看到目录填充文件 – SuperDave