当以前的构建被中止时,Jenkins管道 checkout 到新的工作空间

3hvapo4f  于 2023-06-21  发布在  Jenkins
关注(0)|答案(2)|浏览(164)

因此,我遇到了一个特定的问题,我有一个Jenkins声明管道(来自SVN托管的Jenkinsfile),它被配置为在触发新的构建时不运行并发构建并中止以前的构建。
这工作得很好,但是我遇到的问题是Jenkins会重新 checkout 整个仓库到一个@2后缀的工作区目录,以用于后续的构建(这只发生在触发新的构建后自动中止时,如果第一个构建成功结束,它会重复使用相同的目录)。
我已经看到了大量的线程声明这是通过设计,但从我所看到的,只有当并发构建被启用时,但因为它不是我感到困惑的是什么可能导致Jenkins不重用相同的工作区目录?
如果“为什么”我要求这样做是必要的,我有几个大的存储库(特别是虚幻引擎游戏),我需要建立和作为优化措施的时间,在编译,烹饪和上传游戏,取消旧版本是非常有意义的,但Jenkins决定清理10+GB的游戏代码和资产(20+在其他一些游戏的情况下)在另一个文件夹,因为它不能重用一个文件夹,没有一个工作/建立执行它已经😅。
很乐意接受所有可能的解决方案/建议,因为我有点厌倦了拔头发。

enyaitl3

enyaitl31#

我的管道也遇到了同样的问题。我尝试删除中止的构建并重新启动jenkins。我还删除了工作区中的@2个目录,只保留了主目录。这篇文章,我没有遇到同样的问题。这可能是因为Jenkins的缓存。确保您的工作区正确地反映了jenkins文件中提到的目录名。

wribegjk

wribegjk2#

我相信在你所谓的图书馆里会是这样的

def call() {
  node {
    <some code here>
  }
}

在这种情况下,你调用的方法将在不同的工作空间@2或@3中运行,这取决于你调用的次数,要在同一个工作空间中运行,你只需要从库中删除节点部分,就像这样

def call() {
  <write your code directly here!>
}

但你需要明白你现在是在调用这个方法的阶段中编写,你在这里编写的所有内容都将在同一阶段中,你不能在被调用的方法中将其拆分为多个阶段

相关问题