【问题标题】:Copying files in Jenkins multi-configuration job在 Jenkins 多配置作业中复制文件
【发布时间】:2014-04-19 23:49:18
【问题描述】:

我正在设置一个环境来进行一些测试。我们的构建实际上发生在我们的 Team Foundation Server (TFS) 上,它还通过 SSH 生成了两个 Linux 构建。我们构建的结果是 6 种不同的配置,包括 32 位和 64 位的 Windows 和 Linux(它是 C++ 代码,顶部有一个 Python 层),以及两个 Python 版本。输出如下所示:

  • 构建XX
    • foolnx26
    • 傻瓜26-64
    • 傻瓜27
    • 傻瓜27-64
    • foowin27
    • foowin27-64 测试

在测试奴隶上,我希望它看起来像这样:

  • $工作空间
    • foo...(只是其中之一)
    • 测试

Test 文件夹包含一堆 Python 测试脚本。对于每个平台,我想复制 Tests 文件夹,并且只复制该平台的相应输出文件夹。输出非常大,所以我想避免复制不必要的内容。我们希望在每次签到时运行这些测试。我不想改变我们构建代码的方式,至少现在还没有,只是想添加一些额外的硬件测试。为了满足我们所有的测试需求,我需要在 Windows 和 Linux 上运行测试,包括 32 位和 64 位,以及与我们的代码交互的其他硬件的组合。

基本要求是:

  • 需要在各种平台上运行。
    • 我为此使用了多配置(矩阵)作业,它非常适合路由子作业。
  • 只需将特定平台的输出复制到从站。
  • 要复制的文件将位于 Windows 服务器上。
  • 从属设备既是 Windows 又是 Linux
  • Jenkins 将在 TFS 构建成功时被调用(实际上可能通过 Python)
  • 每个 TFS 构建都有一个新目录。我需要将该目录指定为 Jenkins 的参数。

我尝试了几种方法,但似乎没有一种方法能满足我的需要:

  1. 文件系统 SCM 插件。 我找不到为此使用源目录的参数/变量的方法。此外,它似乎不适用于从 Windows 复制到 Linux
  2. 复制到从属插件。 这可以复制文件,但不能复制到我想要的位置。即使设置我自己的自定义“路径相对于”值(我没有看到记录,只是偶然发现它),我仍然在工作区文件夹下得到额外的子目录。使用矩阵作业,那里已经有一堆文件夹。这也是一个问题,因为我需要知道在哪里为我的测试设置 PYTHONPATH 之类的东西。
  3. 通过 SSH 发布插件 我花了很多时间试图解决这个问题,但无法让它发挥作用。涉及很多配置,比我想要的要多得多。它似乎并不是为了管理将文件从服务器拉到从机(它是发布者......)而设计的。我想我有点倒退了,但无法找到一种简单的方法让它满足我的需要。

此时,我可能只是要编写 shell 脚本代码来调用 rsync 来移动文件,类似于我从 TFS 构建中触发 Linux 构建的方式。看来我不应该这样做。我想要的只是将两个子目录(虽然不是相同的两个)从动态目录复制到每个从站。似乎没有那么不寻常的功能。我错过了什么吗???

【问题讨论】:

    标签: linux windows file jenkins copy


    【解决方案1】:

    看看 Copy Artifacts 插件。即使它说“...来自另一个项目”,工件也可以来自同一个项目(前提是存档步骤已完成)。

    您将需要 2 个 Jenkins 工作。一个负责构建和归档工件,另一个负责复制工件并运行测试。对于测试作业的每个配置/轴,您可以指定要复制的工件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 2018-02-05
      相关资源
      最近更新 更多