在Jenkins多配置作业中复制文件

时间:2014-03-14 15:24:20

标签: linux windows file jenkins copy

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

  • BuildXX
    • foolnx26
    • foolnx26-64
    • foolnx27
    • foolnx27-64
    • foowin27
    • foowin27-64测试

在测试从属设备上,我希望它看起来像这样:

  • $ WORKSPACE
    • foo ...(只是其中之一)
    • 测试

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

基本要求是:

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

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

  1. 文件系统SCM插件。 我找不到一种方法来为源目录使用参数/变量。此外,它似乎不适用于从Windows复制到Linux
  2. 复制到Slave插件。 这可以复制文件,但不能复制到我想要的位置。即使设置我自己的自定义“路径是相对于”值(我没有看到记录,只是偶然发现),我仍然在工作区文件夹下最终有额外的子目录。使用矩阵作业,那里已经有一堆文件夹了。这也是一个问题,因为我需要知道我在哪里设置像PYTHONPATH这样的测试。
  3. 通过SSH插件发布 我花了很多时间试图弄清楚这一个,但是无法让它发挥作用。涉及很多配置,比我想要的要多得多。它似乎并不是设计来管理从服务器到从属机器(它是一个发布者......)的文件。我觉得我有点向后看,但无法想出一个简单的方法让它做我需要的。
  4. 此时,我可能只是编写shell脚本代码来调用rsync来移动文件,类似于我从TFS构建中激活Linux构建的方式。看起来我不应该这样做。我想要的只是将两个目录(尽管不是相同的两个)从动态目录复制到每个从属目录。似乎不是那么不寻常的一点功能。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

查看C opy Artifacts插件。即使它说“......来自另一个项目”,工件也可以来自同一个项目(如果存档步骤已完成)。

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