如何在 Jenkins 节点上设置工作区根目录?
Posted
技术标签:
【中文标题】如何在 Jenkins 节点上设置工作区根目录?【英文标题】:How to set the workspace root directory on Jenkins nodes? 【发布时间】:2014-07-09 22:33:53 【问题描述】:默认情况下,Jenkins 节点上的作业将存储在[Remote FS root]\workspace\
。
目前,[Remote FS root]
设置为 D:\
,所以我的工作在 D:\workspace\
。由于255-characters limit on Windows,我需要我的作业目录直接位于驱动器的根目录。
如何设置工作区根目录为D:\
?
【问题讨论】:
【参考方案1】:我们必须在 Jenkins 主节点启动时指定以下参数:
-Dhudson.model.Slave.workspaceRoot=D:/
为此,请在$JENKINS_HOME
中找到jenkins.xml
配置文件并完成<arguments></arguments>
部分。
【讨论】:
值得注意的是,documentation for Jenkins properties 声明此属性指定“从根目录中包含工作空间的文件夹的名称”。因此,如果我们想在从属服务器上使用D:\jobs
而不是D:\workspace
,则只需将该属性设置为jobs
。似乎指定绝对路径也覆盖了从属根目录的使用。【参考方案2】:
默认情况下,Jenkins slave 上的作业将存储在 [Remote FS root]\workspace\
至少在 Windows 上,这似乎不是真的。
我正在运行 Jenkins 1.480.3,我的从属服务器通过 jenkins-slave.exe
和 jenkins-slave.xml
在 Windows 节点上运行。
XML文件和服务参数都不存储任何路径信息,*workspace
目录创建在jenkins-slave.exe
的位置,和http://server/jenkins/computer/node_name/configure
下的设置一样-> Remote FS root
帮助内容如下:
奴隶需要有一个专门用于 Jenkins 的目录。指定 这个工作目录在slave上的绝对路径,比如 '/var/jenkins' 或 'c:\jenkins'。这应该是本地的路径 从机。 (...)
从站不维护重要数据(除了 项目最后建立在它上面),所以你可以设置从属 工作区到一个临时目录。这样做的唯一缺点是 如果从属设备关闭,您可能会丢失最新的工作区。
所以看起来实际上可以通过 Jenkins FS 根为从站设置 workspace
。
还相关:https://issues.jenkins-ci.org/browse/JENKINS-12667
【讨论】:
是的,使用 Jenkins FS root 是可能的,这就是它的用途。但是,作业被放入[Remote FS root]\workspace
,而我需要它们在[Remote FS root]
,这意味着我的job1将在D:\job1
而不是D:\workspace\job1
。
@StéphaneBruckert - 链接的 Jenkins 问题也是如此。猜猜这是一个不希望它在 FS 根/工作区下的有效案例。
确实如此。我建议的解决方法现在很好,即使我仍然希望有一天会添加此功能。以上是关于如何在 Jenkins 节点上设置工作区根目录?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用声明性 Jenkins 管道在同一节点上运行多个阶段?