Jenkins同时运行多个批处理文件

4

我正在寻找一种方法,可以暂停Jenkins或者让Jenkins在启动另一个批处理进程之前完成批处理任务。基本上,我想要的是类似于运行以下命令的东西:

start /wait batchfile.bat

但是当我运行这个时,Jenkins就会卡住,进程从未真正完成。当我运行类似于以下内容的东西时:
run %startpath%\firstbatch.bat

run %startpath%\secondbatch.bat

Jenkins同时在不同的线程中运行批处理文件,这对我造成了很大问题。我需要批处理过程完成,因为它们要备份和复制资源。最后一个被触发的批处理程序会将资产压缩并发送,但是如果资源还没有被复制完,那么压缩会在目录中所有文件都准备好之前开始。唯一想到的另一种解决方法是将每个批处理程序放在不同的构建中,并在Jenkins中添加安静时间,但这只是猜测批处理脚本实际运行多长时间。提前感谢。

2个回答

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

这个方法可行。我知道我尝试过这个方法,因为我的批处理文件必须“调用”其他批处理文件以并发运行,但由于某种原因,我会收到无效目录错误,可能是因为它不喜欢我的环境变量。现在它正在工作,并且像应该一样输出到控制台。谢谢你们两个的答案。我为此苦恼了很久,我知道这一定是我忽略的简单问题。 - PirateDave

1
如果您希望批处理文件按顺序运行,那么您应该为每个批处理文件创建一个单独的构建作业,但是您不需要猜测它们运行所需的时间。在运行firstbatch.bat的作业的配置中,在“后构建操作”部分中选择“构建其他项目”,并指定运行secondbatch.bat的作业。只有在第一个作业完成后,才会启动此作业。

1
我也尝试过这样做,也许我的退出代码有点混乱,因为Jenkins只会运行批处理文件,然后退出并显示:进程泄漏文件描述符。请参阅http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build获取更多信息。 完成:成功,然后立即开始下一个构建步骤,但我知道批处理还没有完成,因为我可以看到目录正在填充文件。 - PirateDave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接