当前位置: 首页 > 知识库问答 >
问题:

如何重用Jenkins上具有多分支管道的分支之间的工作空间?

单于季
2023-03-14

我已经建立了多分支管道来跟踪我的回购,并自动构建和测试所有合并请求。然而,我注意到Jenkins为每个新分支创建了一个新的工作区。这是一个相当大的项目,有着繁重的构建过程和大量未跟踪的缓存文件,这些文件大多在不同版本之间保持有效——因此,如果不是新的git签出,而是重新使用以前的工作区,那么它的构建速度会快得多(也不会占用太多硬盘空间)。

如何将其配置为对不同分支重复使用相同的工作区?

共有2个答案

苏墨竹
2023-03-14

Jenkins for MultiChain项目默认为每个分支使用隔离的工作区。同一分支中的作业使用相同的工作区。

一种可能的解决方案是在管道内使用ws(path)。

node("agent_name") {
    ws(workspacePath) {
        echo '...'      
        // ..
    }
}
皇甫卓君
2023-03-14

在研究了这个问题后,我发现这不是我可以用多分支管道做的,所以我转而使用常规管道项目。现在,每个构建都使用一个可用的工作区,因此它们最终会重复使用以前的工作区和相同的缓存文件,从而真正加快构建速度。

 类似资料:
  • 我对使用Jenkins文件和GIT插件的Jenkins多分支pipleline有一个问题。 问题是,每次向暂存分支推送都会触发master管道。所需的行为是,推送到暂存分支仅触发用于暂存的管道,而推送到主分支仅触发主管道 这是我的詹金斯档案 我将分享一些日志:这是主分支的日志 这是主分支的日志,但只有暂存有一个新的提交: 注意“已发现更改”,即使主分支上的头未更改 詹金斯·弗。2.190.1 Gi

  • 对于一个新项目,我想使用Jenkins CI的新管道功能。我们的Git存储库中有几个分支,应该以同样的方式进行测试。它还应该自动跟踪和处理新的分支。因此,我创建了一个多分支管道作业。但它的配置有两个问题: 1) 为了被Jenkins标记为有效,分行需要一个“Jenkinsfile”。如果这不存在,詹金斯将忽略该分支。有没有办法标记与模式匹配的所有分支,而不需要在其中包含此文件? 2) 每个分支都应

  • 我遇到了JENKINS-38706。由于它已经开放了一段时间,我正在努力解决这个问题。 我的问题是我正在运行一个多节点管道,其中一个节点是Windows从节点,具有255个字符路径限制。 因此,我正在尝试更改我的Windows从属阶段的工作区,而不是使用多分支管道使用的C:\jenkins\workspace\job-分支-随机字符,我正在尝试将其移动到c:\w\Jobs\分支。 它立即失效: 我

  • 我有一个外部工具,在我的jenkins工作中应该称为构建步骤。不幸的是,该工具在引用命令以避免从调用的路径中出现空格问题方面存在一些问题。 Jenkins安装在中。因此,我在jenkins调用外部工具时遇到了问题。 我尝试的是设置“工作区根目录”在詹金斯 - 一种解决方案是将整个詹金斯安装移动到例如。我想避免这种情况。有没有一种正确的方法来告诉 Jenkins 管道作业也使用“工作区根目录”? 感

  • 我正在努力使用Jenkins 2.1多分支管道,在这里,我从同一个git存储库构建了多个工件。一些工件是独立的,应该根据它们各自目录中的更改触发构建。有些是依赖的,应该由先前的步骤/构建触发。 存储库有一个控制整个管道的文件。Jenkins多分支管道作业会在所有更改时触发(无其他行为)。 我不知道如何在目录dirA发生变化时触发工件A的构建。 git回购协议中的Jenkins文件file:///r

  • 有人知道如何使用跨分支的多分支作业中设置的声明性管道来限制并发构建吗? 每当我们为某个阶段设置代理时,就会分配一个新的执行者。这会导致死锁,例如,当您为尽可能多的分支同时触发生成时,您有执行者。不设置代理会导致阶段随机选择执行者,这是不可接受的,因为某些阶段需要在某些代理上运行。。。 经典的方法不起作用: Throttle并发构建插件不适用于多分支 设置属性([disableConcurrentB