【问题标题】:Jenkins running multiple batch files at once詹金斯一次运行多个批处理文件
【发布时间】:2012-11-27 21:10:08
【问题描述】:

我正在寻找一种方法来暂停 Jenkins 或让 Jenkins 在开始另一个批处理之前从批处理文件完成任务。基本上我想要的是类似于跑步的东西:

start /wait batchfile.bat

但是当我运行这个 Jenkins 时,它只是挂起,并且该过程从未真正完成。当我运行这样的事情时:

run %startpath%\firstbatch.bat

run %startpath%\secondbatch.bat

Jenkins 在不同的线程中运行这两个批处理文件,这对我来说是个大问题。我需要完成批处理,因为它们会烹饪和复制资产。触发的最后一批压缩资产并在途中发送它们,但如果资产没有被复制,则压缩开始时没有目录中的所有文件。我能想到的唯一另一种方法是将每个批次放在不同的构建中,并为 Jenkins 添加一个安静期,但这只是对批次脚本实际运行时间的猜测。提前致谢。

【问题讨论】:

    标签: multithreading batch-file jenkins


    【解决方案1】:

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

    【讨论】:

    • 这行得通。我知道我尝试了这个,因为我的批处理文件必须“调用”其他批处理才能并发运行,但由于某种原因,我会收到一个无效的目录错误,可能是因为它不喜欢我的环境变量。现在它正在工作,甚至可以正常输出到控制台。谢谢你们的回答。我把头发拉了出来,我知道这一定是我忽略的一些简单的事情。
    【解决方案2】:

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

    【讨论】:

    • 我也尝试过这样做,也许我的退出代码有点奇怪,因为 Jenkins 只会运行批处理文件然后退出:处理泄漏的文件描述符。有关更多信息,请参阅wiki.jenkins-ci.org/display/JENKINS/… 完成:成功然后立即开始下一个构建步骤,但我知道批处理尚未完成,因为我可以看到目录填充文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多