如何在 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.exejenkins-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进阶-Slave节点配置(16)

如何使用声明性 Jenkins 管道在同一节点上运行多个阶段?

jenkins 如何让job对应一个节点

Jenkins管道如何更改到另一个文件夹

如何在同一个 Jenkins 节点中加载另一个 groovy 脚本?

持续集成工具jenkins slave节点配置