在Jenkins管道中,当在特定节点上运行构建时,会在该代理上分配工作区。我们没有设置工作空间路径,因此它是自动确定的。我了解,当同一作业在同一代理上同时运行时,工作空间必须包含执行程序编号以隔离构建。
但是…工作空间路径究竟是如何构建的?
我们的构建被分配给一个特定的节点(具有4个执行程序),并且被配置为不允许并行构建。通常分配给它:
EXECUTOR_NUMBER=1
WORKSPACE=xxx\yyy\jobname
在某个时候,该构建开始在执行程序2上运行,但仍使用与以前相同的工作空间。
稍后,该构建再次在执行程序1上运行,但现在使用
WORKSPACE=xxx\yyy\jobname@2
由于无法处理路径中的“ @”符号,因此中断了构建。从那时起,即使将构建计算机上的执行程序的数量设置为1,手动删除代理的工作区目录等,构建仍继续使用该工作区。
所以我的问题是:
感谢您的任何见解!
我们正在使用Jenkins LTS 2.107.2和最新的Pipeline插件(我不知道哪个版本特别有趣)。
工作区分配在WorkspaceList.java中完成。
在工作空间上可能会获得一些锁,这些锁随后会导致@<number>
后缀,请参见allocate
指出最后This method doesn't block prolonged amount of time. Whenever a desired workspace is in use, the unique variation is added.
检查COMBINATOR
变量的方法。
如果这确实是一个大问题,那么您可以自己编译jenkins并更改此分隔符。减少麻烦的可能是自己分配工作区,即在选择自己的路径时以某种方式检查它们是否未使用(或使用一些时间戳后缀),但要注意,此分隔符还用于其他可能使用的路径,例如使用全局共享库,这些库使用类似workspace@script
等的路径。
编辑:错过了您的其他问题。如您在此源文件中所看到的,执行器编号与工作空间命名无关。唯一理由是,当一些锁是基础工作空间的路径上没有后缀的+号(inUse.get(candidate.getRemote());
。所以一旦工作区是INUSE它只是检查下一个候选与@n+1
据我所知,詹金斯将重用的工作空间。根据你的供应链结算策略,你可能甚至考虑在使用deleteDir进行构建之前手动清理工作区,以确保不会产生副作用。
在Jenkins管道中,当在特定节点上运行构建时,会在该代理上分配工作区。我们没有设置工作区路径,所以它是自动确定的。我知道工作区必须包含执行程序编号,以便在同一代理上同时运行相同作业时隔离构建。 但是工作区路径是如何构造的? 我们的构建被分配给一个特定的节点(有4个执行器),并且被配置为不允许并发构建。通常分配给: 在某个时刻,构建开始在executor 2上运行,但仍然使用与以前相同的工作区。
我有一个外部工具,在我的jenkins工作中应该称为构建步骤。不幸的是,该工具在引用命令以避免从调用的路径中出现空格问题方面存在一些问题。 Jenkins安装在中。因此,我在jenkins调用外部工具时遇到了问题。 我尝试的是设置“工作区根目录”在詹金斯 - 一种解决方案是将整个詹金斯安装移动到例如。我想避免这种情况。有没有一种正确的方法来告诉 Jenkins 管道作业也使用“工作区根目录”? 感
问题内容: 我是Jenkins / Hudson的新手,正在尝试从buildbot迁移基于C make的项目。由于遗留原因,构建系统被硬编码以在版本控制的源代码树(git)之外(在上面的一个目录中)在单独的目录中进行构建。例如: 除了最终在工作空间之外创建目录这一事实外,Jenkins不会识别上面build /目录中的项目以将其归档为工件。 如何使这种构建系统与Hudson一起使用?在源代码树中构
我正在尝试从管道中自动创建Jenkins管道构建。 我有一个管道,它创建一个比特桶存储库并向其提交一些代码,包括一个Jenkinsfile。 我需要向此管道添加另一个步骤,然后为其创建管道生成,这将运行 Jenkinsfile 中的步骤。 我认为Jobs DSL应该能够处理这一点,但我找到的文档非常稀少,我仍然不完全确定是否有可能或如何做到这一点。 任何帮助都将不胜感激。我想生成的Pipeline
我正在使用jenkins job DSL插件创建一个jenkins pipeline作业来播种作业。如何获得DSL文件中的工作空间路径?詹金斯管道代码是这样的: 失败的 DSL 代码是: 出现错误: 在管道区域中创建的变量在作业DSL步骤中不可访问
我们现在正在试验多分支管道构建。该功能的主要优点是,它允许我们在创建新分支时自动创建新的Jenkins工作。 然而,它也比选择如何使用用户界面进行构建的旧方法更难实现。另外,某些功能似乎丢失了。 例如,在Jenkins Freestyle作业中,我们可以使用Jenkins UI浏览工作区,下载单个文件,甚至删除工作区。我们发现,当构建出错或开发人员需要未归档的特定构建资产时,这一点很有用。 我注意