Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 詹金斯:如何避免在P4服务器上创建工作区?_Jenkins_Perforce - Fatal编程技术网

Jenkins 詹金斯:如何避免在P4服务器上创建工作区?

Jenkins 詹金斯:如何避免在P4服务器上创建工作区?,jenkins,perforce,Jenkins,Perforce,每当我在Jenkins上创建新作业时,它都会在perforce服务器上创建两个工作区。(带有后缀-0和-1) 可以告诉Jenkins只在机器上创建本地工作区,而不在Perforce服务器上创建工作区吗 因为我有很多Jenkins的工作,很快就会在perforce服务器上出现混乱,因为有这么多的工作区。perforce是一个集中式系统,中央服务器是每个工作区状态的真实来源。从技术上讲,从Perforce中提取文件而不创建跟踪工作区是可能的,从技术上讲,您可以重写Jenkins插件来实现这一点,但实

每当我在Jenkins上创建新作业时,它都会在perforce服务器上创建两个工作区。(带有后缀-0和-1)

可以告诉Jenkins只在机器上创建本地工作区,而不在Perforce服务器上创建工作区吗


因为我有很多Jenkins的工作,很快就会在perforce服务器上出现混乱,因为有这么多的工作区。

perforce是一个集中式系统,中央服务器是每个工作区状态的真实来源。从技术上讲,从Perforce中提取文件而不创建跟踪工作区是可能的,从技术上讲,您可以重写Jenkins插件来实现这一点,但实际上,这就像通过
curl
浏览维基百科一样,因为您不想通过安装浏览器来扰乱桌面


我的建议是将Jenkins配置为在其所有工作区前面加上方便过滤的字符串,如
~Jenkins~
,这样您就可以轻松忽略它们,然后继续生活。

您所说的“Performce server上的工作区”是什么意思?在Perforce术语中,工作区(也称为“客户端”)是跟踪签出内容(从何处到何处)的元数据。此元数据存储在服务器上,不会占用您需要处理的空间。只有在客户机上才签出真正的数据(文件内容)。但是我创建了10个jenkins作业,由于这些作业,突然有20个工作区(每个工作区2个)。是否有一种方法可以通过跳过此客户端/元数据创建来保持美观?不是100%确定这是否是原因,但是如果有相同作业的并行构建正在运行,Jenkins P4插件必须创建两个客户端。由于perforce工作区还包括签出目标的定义,因此必须有两个并发构建的工作区声明。如果Jenkins应该签出源代码,那么它当然要创建一个专用的工作区。只是不在乎而已。Perforce服务器拥有数千个工作区是完全正常的。这没问题。大多数Performce管理员都有一个简单的工具,他们会定期运行该工具来查找和删除旧的工作区。你的管理员有这个工具吗?如果是这样,别担心。如果没有,也许他们应该部署一个。我认为OP要求的是一个在构建过程中幸存下来的永久工作区,而不是临时工作区。竹可以被配置成这样做,要求这样做似乎是合理的,并且减少了一些鞭笞。OP特别说“由于Jenkins,我想要0个工作空间”,这小于1.:)。不管是哪种方式,我认为你最好处理它的工作方式,而不是试图重写它。在服务器上定义几个额外的工作区并不像大多数用户本能地认为的那样是一个资源问题,但它可能是一个时间资源问题。将“永久”工作区同步到最新工作区通常几乎不需要时间。每次进行CI构建时,从头开始同步两个700 MB的工作区可能会被认为是浪费时间。我对Jenkins插件不太了解,但我猜,不使用一组工作区文件来处理所有事情的一个原因是,您失去了任何类型的并行性,在一个可能被数千用户共享的CI系统中,为了节省一点磁盘I/O,这似乎是一个非常糟糕的权衡。(与是否使用多个工作空间规范有些正交,因为理论上你可以有一个工作空间规范,并使用
sync-p
来填充不同的根——我假设它使用
sync-p
,但我可能错了。)你可能有一些想法。Atlassian Bambol在除Perforce之外的所有源代码管理系统中都是这样做的,特别是在处理并行性方面。但是,太糟糕了,他们不让我们选择我们想要的。我敢打赌,大多数构建都不是并行完成的。