【问题标题】:Jenkins slaves workspaces詹金斯奴隶工作区
【发布时间】:2015-07-25 05:45:46
【问题描述】:

我有一个 Jenkins 多配置项目,我想在位于两个不同 VM 上的两个从属设备(Slave-1 和 Slave-2)上构建。我对 Jenkins 如何尝试为每个奴隶创建不同的工作区有疑问。我想在每个 VM 上使用相同的工作区路径。

我从 Perforce 获取我的项目文件,并希望将它们放在两个 VM 上的目录 c:\workspace 中。但是,当我运行构建时,我会查看具有 Slave-1 的 VM,并将项目文件存储在:

c:\workspace\label\Slave-1

在另一个虚拟机上,项目文件位于:

c:\workspace\label\Slave-2

c:\workspace 下的文件夹“label”是我为配置矩阵输入的从属名称。

如何覆盖 Jenkins 以将我的项目文件放在每个 VM 上的 c:\workspace 下(没有 \label\Slave_name 文件夹)?我了解 Jenkins 这样做是为了避免混淆,但我的工作区位于完全不同的 VM 上,它们不会以任何方式相互交互。我必须使用 c:\workspace 目录才能正确构建。

【问题讨论】:

标签: jenkins workspace master-slave multi-configuration


【解决方案1】:

您可以使用额外的参数启动 Jenkins:

-Dhudson.model.Slave.workspaceRoot=c:\workspace

取自这里: https://issues.jenkins-ci.org/browse/JENKINS-12667

【讨论】:

  • 我将参数添加到我的 .xml 文件的参数中,但查看日志,它显示 Jenkins 在构建过程中切换我的根目录。
  • @Stew C 中建?在构建步骤中,Jenkins 将控制权传递给正在执行的任何步骤。所以,如果它真的是中期构建,那么你应该检查你的构建脚本
【解决方案2】:

条款:

UnifiedDir:您要使用的目标目录,在两个虚拟机上都相同 工作区:Jenkins 创建的每个虚拟机唯一的目录

要绕过工作区隔离和唯一命名,您的构建脚本应将整个工作区(或您需要的内容)复制到目标统一目录中。然后在“Workspace\Build SCript”中的第二个调用应该调用“UnifiedDir\Build Script”

现在您在构建节点之间有了一个统一的工作区。只需确保在复制 WORKSPACE 内容之前删除此 UnifiedDir 的内容即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多