首页 > 解决方案 > 在 Jenkins 中并行运行相同的管道

问题描述

我对詹金斯比较陌生。我在 Jenkins 中创建了一个声明性管道,要求用户输入他们的分支名称,然后 Jenkins 构建该特定分支(例如,origin/mybranch)。这使我可以为特定分支运行一组快速测试。

开发人员可以多次运行管道,今天我阻止多个这样的管道同时运行,因为如果他们这样做,一个会覆盖另一个。

发生这种情况是因为第一个管道写入 c:\Jenkins\workspace\QuickBuild 并且当另一个这样的作业运行写入完全相同的文件夹时,会终止原始运行。

阻塞是我发现的防止这种情况的解决方案,但我希望它在一次运行完成时(使用少于 8 个内核),队列中的下一次运行将已经开始运行,并且释放了任何内核。

我会认为这将是 Jenkins 的基本概念。我错过了什么吗?我做错了吗?

标签: jenkinsparallel-processingjenkins-pipelineworkspace

解决方案


按照 MaratC 和 Zett42 的建议,我最终将其添加到我的脚本中:

    agent
    {
        node {
            customWorkspace "${params.Branch}"
        }
    }

这会导致 Jenkins 在不同的文件夹中创建每个构建,并且它们不会踩到彼此的脚趾。

唯一的缺点是您不能同时构建相同的分支,但这是一个极端情况。另外,我也可以向工作区添加一个随机数来启用它。


推荐阅读